原文: https://howtodoinjava.com/puzzles/fizzbuzz-solution-java/

FizzBuzz 是一款有趣的游戏,主要在小学阶段玩。 规则很简单:轮到您时,请说出下一个号码。 但是,如果该数字是 5 的倍数,则应改为说“fizz”(最好带有法国口音)。 如果数字是 7 的倍数,则应说“buzz”。 而且,如果两者均是倍数,则应说“fizzbuzz”。 如果您搞砸了,就出局了,比赛在没有您的情况下继续进行。

请注意,可以使用不同的除数来代替 5 和 7,也可以使用不同的除数,并且不同的单词或手势可以代替“fizz”或“buzz”(参考)。

让我们学习编写一个程序来用 Java 模拟这个游戏。

在 Java8 中解决 FizzBuzz

使用最新的 Java 版本 8,让我们使用 Java8 构造设计解决方案。

  1. IntStream.rangeClosed(1, 100)
  2. .mapToObj(i -> i % 5 == 0 ? (i % 7 == 0 ? "FizzBuzz" : "Fizz") : (i % 7 == 0 ? "Buzz" : i))
  3. .forEach(System.out::println);

在 Java8 之前解决 FizzBuzz

如果您仍未使用 Java8,则此 Fizzbuzz 解决方案将使用基本的for循环并遍历数字范围并确定要打印的内容。

  1. for (int i = 1; i <= num; i++)
  2. {
  3. if (((i % 5) == 0) && ((i % 7) == 0)) // Is it a multiple of 5 & 7?
  4. System.out.println("fizzbuzz");
  5. else if ((i % 5) == 0) // Is it a multiple of 5?
  6. System.out.println("fizz");
  7. else if ((i % 7) == 0) // Is it a multiple of 7?
  8. System.out.println("buzz");
  9. else
  10. System.out.println(i); // Not a multiple of 5 or 7
  11. }

完整的 FizzBuzz 示例代码

两种解决方案都非常容易并且易于说明。 下面给出的是 fizzbuzz 的工作示例源代码。 随意修改和使用代码。

  1. import java.util.stream.IntStream;
  2. public class FizzBuzz
  3. {
  4. public static void main(String[] args)
  5. {
  6. fizzBuzzBeforeJava8(100);
  7. fizzBuzzInJava8(100);
  8. }
  9. private static void fizzBuzzBeforeJava8(int num)
  10. {
  11. for (int i = 1; i <= num; i++)
  12. {
  13. if (((i % 5) == 0) && ((i % 7) == 0)) // Is it a multiple of 5 & 7?
  14. System.out.println("fizzbuzz");
  15. else if ((i % 5) == 0) // Is it a multiple of 5?
  16. System.out.println("fizz");
  17. else if ((i % 7) == 0) // Is it a multiple of 7?
  18. System.out.println("buzz");
  19. else
  20. System.out.println(i); // Not a multiple of 5 or 7
  21. }
  22. }
  23. private static void fizzBuzzInJava8(int num) {
  24. IntStream.rangeClosed(1, 100)
  25. .mapToObj(i -> i % 5 == 0 ? (i % 7 == 0 ? "FizzBuzz" : "Fizz") : (i % 7 == 0 ? "Buzz" : i))
  26. .forEach(System.out::println);
  27. }
  28. }

学习愉快!