bpr*_*mas 8 java if-statement fizzbuzz
对于那些不知道的人,FizzBuzz存在以下问题:
编写一个程序,打印从1到100的数字.但是对于三个的倍数打印"Fizz"而不是数字和五个打印"Buzz"的倍数.对于三和五的倍数的数字打印"FizzBuzz".
我找到的每个FizzBuzz解决方案都是为了原创而制作的一些疯狂的深奥解决方案,或者你的基本if-else链:
for(int i = 1; i <= 100; i++) {
if(i % 3 == 0 && i % 5 == 0) {
System.out.println("FizzBuzz");
} else if (i % 3 == 0) {
System.out.println("Fizz");
} else if (i % 5 == 0) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个简单的解决方案,旨在取出"FizzBuzz"if语句.我有这个想法:
for(int i = 1; i <= 100; i++) {
if (i % 3 == 0)
System.out.print("Fizz");
if (i % 5 == 0)
System.out.println("Buzz")
else
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我假设它可以通过输入ifs,Fizz和Buzz来打印FizzBuzz,但是如果数字是3,它会打印Fizz3.我该如何避免这种情况?
aio*_*obe 11
你要做的是
if (a)
...
if (b)
...
else // if neigther a nor b
...
Run Code Online (Sandbox Code Playgroud)
这根本不可能.一个else只能属于一个if.你必须使用稍长的变体.
为避免对模运算符进行冗余求值,可以将循环体表示为
boolean fizz = i % 3 == 0;
boolean buzz = i % 5 == 0;
if (fizz)
System.out.print("Fizz");
if (buzz)
System.out.print("Buzz");
if (!(fizz || buzz))
System.out.print(i);
System.out.println();
Run Code Online (Sandbox Code Playgroud)
另一个是
String result = "";
if (i % 3 == 0) result = "Fizz";
if (i % 5 == 0) result += "Buzz";
if (result == "") result += i;
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)