我想创建一个从0到500的数字的三层嵌套迭代,以10为步长。
我尝试了以下操作,但在右方括号中出现错误。 你能请教吗?
谢谢。
public class App {
public static void main(String[] args) {
IntStream.rangeClosed(0, 500).filter(a -> a % 10 == 0).forEach( a ->
IntStream.rangeClosed(0, 500).filter(b -> b % 10 == 0).forEach( b ->
IntStream.rangeClosed(0, 500).filter(c -> c % 10 == 0).forEach( c->
System.out.println(a + ", " + b + ", " + c);
);
);
);
}
}
答案 0 :(得分:3)
您可以生成IntStream
,它们仅包含10的倍数,而不是在每个流中生成501个元素,然后过滤所有不能被10整除的元素,
IntStream.iterate(0, i->i+10).limit(51).forEach( a ->
IntStream.iterate(0, i->i+10).limit(51).forEach( b ->
IntStream.iterate(0, i->i+10).limit(51).forEach( c->
System.out.println(a + ", " + b + ", " + c)
)
)
);
答案 1 :(得分:1)
我的建议是:
IntStream.rangeClosed(0, 50)
.forEach(a -> IntStream.rangeClosed(0, 50)
.forEach(b -> IntStream.rangeClosed(0, 50)
.forEach(c -> System.out.format("%3d, %3d, %3d%n",
a * 10, b * 10, c * 10))));
摘录自输出:
0, 0, 0
0, 0, 10
0, 0, 20
0, 0, 30
0, 0, 40
…
500, 500, 490
500, 500, 500
Eran’s answer中的limit(51)
看起来很有趣。
您的代码出了什么问题?如Eran在a comment中所说,在流中的方法调用之后,除非有花括号,否则您不能使用分号;
。 )。只需删除前三个分号,您的代码就可以使用。