在使用 IntStream
?
public static void fizzBuzz(int n) {
// The below does not work as it expects a return value.
// Is there a different method that I could use to perform this?
IntStream.range(1, n).map(n -> print(n));
}
private static void print(int n){
boolean isDivisibleBy3 = n % 3 == 0;
boolean isDivisibleBy5 = n % 5 == 0;
if(isDivisibleBy3 && isDivisibleBy5){
System.out.println("FizzBuzz");
} else if (isDivisibleBy3){
System.out.println("Fizz");
} else if (isDivisibleBy5){
System.out.println("Buzz");
} else {
System.out.println(n);
}
}
4条答案
按热度按时间fafcakar1#
这个
map()
操作需要一个非void函数作为其输入,这样这个函数就可以应用于流中的每个元素并替换它们。使用forEach()
相反。它可以对元素应用void函数。也不要用
n
在你的lambda表情中。它已声明,无法覆盖。qfe3c7zg2#
正如其他人所指出的那样,你目前的方法并不适合你
map
因为你的职能是void
. 你可以绘制Mapint
至String
不过。这种方法看起来像,如果你进一步使用
forEach
. 比如,cuxqih213#
也许这就是你想要的。让方法返回字符串。然后使用
IntStream
迭代数字。然后将它们传递给Mapint
返回的值是String
. 然后您只需打印该值。印刷品
plupiseo4#
map
要将一个值转换为另一个值时使用。自print
不返回任何内容(其返回类型为void
),您不能使用map
. 你可以用forEach
但是: