JAVA:使用IntStream

时间:2016-12-30 22:03:25

标签: java java-stream

我需要计算0到100之间所有数字的幂,然后使用IntStream打印它们。 这是我得到的,但它不起作用。我明白为什么它不起作用,但我找不到解决方案。

IntStream.iterate(0, i -> i * i + 1).limit(100).forEach(System.out::println);

3 个答案:

答案 0 :(得分:3)

由于你的问题不明确,我做了几个假设。

  

我需要计算0到100之间所有数字的幂

根据您的示例代码,我假设你想要计算0到100之间每个数字的 square

我假设您想要一个类似于......的输出

  

0

     

1

     

4

     

9

     

16

     

...

     

10000

如果是这样,那么我建议两件事。首先,将iterate替换为range。其次,使用map将值映射到它们的方块。

IntStream.rangeClosed(0,100).map(x -> x * x).forEach(System.out::println);

我们在做什么:

对于每个整数x∈[0,100]:print x * x。

答案 1 :(得分:0)

就像上面的评论中提到的那样,我不知道你正在寻找什么样的权力以及哪些不起作用但是这里是一种使用IntStream来使用(i * i + 1)方法获得所有数字的力量的方法你使用:

IntStream.rangeClosed(0, 100).map(i -> i * i + 1);

希望有所帮助:)

答案 2 :(得分:0)

如果您必须使用IntStream.iterate,则可以尝试IntStream.iterate(1, i -> (int)Math.pow(Math.sqrt(i)+1, 2)).limit(100).forEach(System.out::println);之类的内容。效率不高但满足您的需求。如果您想要一个优雅的解决方案,请尝试其他答案。