3 回答
TA贡献1784条经验 获得超9个赞
这要短得多,而且更有意义。
for(int i = 0; i < 1000; i++){
String str = Integer.toString(i);
for(int j = 0; j < str.length(); j++){
if(str.charAt(j) == '3' || str.charAt(j) == '6')
System.out.println("nuber = "+ i);
}
}
TA贡献1798条经验 获得超7个赞
你的代码工作得很好,唯一缺少的是你的循环直到 999。
此外,在 Java 8 中,您可以简单地执行以下操作:
IntStream.range(1,1001).mapToObj(p->Integer.toString(p)).filter(p->p.contains("3")||p.contains("6")).forEach(System.out::println);
输出:
3
6
13
16
.
.
993
996
- 编辑 -
如果您想要从 3 或 6 开始的所有数字,您可以使用以下之一:
IntStream.range(1,1001).mapToObj(p->Integer.toString(p)).filter(p->p.charAt(0)=='3'||p.charAt(0)=='6').forEach(System.out::println);
输出:
3
6
30
31
32
.
.
.
.
698
699
TA贡献1744条经验 获得超4个赞
你似乎把事情复杂化了。相反,我会选择:
IntStream.range(1,1000)
.filter(n -> String.valueOf(n).matches(“3|6”))
.forEach(n-> System.out.println(“number “ + n));
或命令式方法:
for(int i = 1; i < 1000; i++)
if(String.valueOf(i).matches(“3|6”))
System.out.println(“number “+i);
添加回答
举报