FizzBuzz 是一款主要在小学时玩过的有趣游戏。规则很简单:轮到你时,你说下一个数字。但是,如果该数字是五的倍数,则应改为说“fizz”(最好带有法国口音)。如果数字是七的倍数,你应该说“buzz”。如果是两者的倍数,你应该说“fizzbuzz”。如果你搞砸了,你就出局了,游戏在没有你的情况下继续进行。
请注意,可以使用不同的除数代替或补充 5 和 7,不同的词或手势可以代替“fizz”或“buzz”。 [参考]
让我们学习用java编写一个程序来模拟这个游戏。
最新的 Java 版本为 8,让我们使用 Java 8 构造设计一个解决方案。
IntStream.rangeClosed(1, 100) .mapToObj(i -> i % 5 == 0 ? (i % 7 == 0 ? "FizzBuzz" : "Fizz") : (i % 7 == 0 ? "Buzz" : i)) .forEach(System.out::println);
如果您仍然没有使用 Java 8,那么这个 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 的工作示例源代码。随意修改和使用代码。
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); } }
快乐学习!!
地址:https://www.cundage.com/article/fizzbuzz-solution-java.html