Java 中的 FizzBu​​zz 解决方案

Java 中的 FizzBu​​zz 解决方案

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

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

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

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

在 Java8 中解决 FizzBu​​zz

使用最新的 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 之前解决 FizzBu​​zz

如果您仍未使用 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
}

完整的 FizzBu​​zz 示例代码

两种解决方案都非常容易并且易于说明。 下面给出的是 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);
	}
}

学习愉快!