原文: https://howtodoinjava.com/puzzles/fizzbuzz-solution-java/
FizzBuzz 是一款有趣的游戏,主要在小学阶段玩。 规则很简单:轮到您时,请说出下一个号码。 但是,如果该数字是 5 的倍数,则应改为说“fizz”(最好带有法国口音)。 如果数字是 7 的倍数,则应说“buzz”。 而且,如果两者均是倍数,则应说“fizzbuzz”。 如果您搞砸了,就出局了,比赛在没有您的情况下继续进行。
请注意,可以使用不同的除数来代替 5 和 7,也可以使用不同的除数,并且不同的单词或手势可以代替“fizz”或“buzz”(参考)。
让我们学习编写一个程序来用 Java 模拟这个游戏。
在 Java8 中解决 FizzBuzz
使用最新的 Java 版本 8,让我们使用 Java8 构造设计解决方案。
IntStream.rangeClosed(1, 100)
.mapToObj(i -> i % 5 == 0 ? (i % 7 == 0 ? "FizzBuzz" : "Fizz") : (i % 7 == 0 ? "Buzz" : i))
.forEach(System.out::println);
在 Java8 之前解决 FizzBuzz
如果您仍未使用 Java8,则此 Fizzbuzz 解决方案将使用基本的for
循环并遍历数字范围并确定要打印的内容。
for (int i = 1; i <= num; i++)
{
if (((i % 5) == 0) && ((i % 7) == 0)) // Is it a multiple of 5 & 7?
System.out.println("fizzbuzz");
else if ((i % 5) == 0) // Is it a multiple of 5?
System.out.println("fizz");
else if ((i % 7) == 0) // Is it a multiple of 7?
System.out.println("buzz");
else
System.out.println(i); // Not a multiple of 5 or 7
}
完整的 FizzBuzz 示例代码
两种解决方案都非常容易并且易于说明。 下面给出的是 fizzbuzz 的工作示例源代码。 随意修改和使用代码。
import java.util.stream.IntStream;
public class FizzBuzz
{
public static void main(String[] args)
{
fizzBuzzBeforeJava8(100);
fizzBuzzInJava8(100);
}
private static void fizzBuzzBeforeJava8(int num)
{
for (int i = 1; i <= num; i++)
{
if (((i % 5) == 0) && ((i % 7) == 0)) // Is it a multiple of 5 & 7?
System.out.println("fizzbuzz");
else if ((i % 5) == 0) // Is it a multiple of 5?
System.out.println("fizz");
else if ((i % 7) == 0) // Is it a multiple of 7?
System.out.println("buzz");
else
System.out.println(i); // Not a multiple of 5 or 7
}
}
private static void fizzBuzzInJava8(int num) {
IntStream.rangeClosed(1, 100)
.mapToObj(i -> i % 5 == 0 ? (i % 7 == 0 ? "FizzBuzz" : "Fizz") : (i % 7 == 0 ? "Buzz" : i))
.forEach(System.out::println);
}
}
学习愉快!