尝试找到一种解决方案来检查两个不同的 if 条件,如果两者都不为 true,则输出第三件事。此处使用示例 FizzBuzz 代码来演示该问题,其中 Fizz 代表 5 的任意倍数,Buzz 代表 7 的任意倍数。我首先在这里编写了执行此操作的“正确”方法。
//java
public class Fizzbuzz {
public static void main(String[] args) {
for(int i = 0; i < 100; i++ ) {
if(i % 5 == 0 && i % 7 == 0) {
System.out.println("FizzBuzz");
} else if(i % 5 == 0) {
System.out.println("Fizz");
} else if(i % 7 == 0) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
}
}
我认为这很糟糕,因为使用 4 个 if 语句来检查两个可能的事情理论上是一种浪费。它可以很容易地简化为这样的:
//java
public class Fizzbuzz2 {
public static void main(String[] args) {
for(int i = 0; i < 100; i++ ) {
if(i % 5 == 0) {
System.out.print("Fizz");
}
if(i % 7 == 0) {
System.out.print("Buzz");
}
if(i % 5 != 0 && i % 7 != 0) {
System.out.print(i);
}
System.out.print(\n);
}
}
}
理想情况下,这可以简化为这样的事情
if (x), print fizz
if (y), print buzz
if neither of the first two, print i
打印嘶嘶声,嗡嗡声,我不添加换行符,print(/n)
在最后。
任何人都知道如何做到这一点(用任何语言?)。
一种方法是使用
if
语句设置一个值,然后使用 switch
/ case
来指示根据该值发生的情况。
public static void fizzBuzzPop2 () {
for (int i = 1; i < 350; ++i) {
int flag = 0;
if (i % 3 == 0) { flag += 1; }
if (i % 5 == 0) { flag += 2; }
if (i % 7 == 0) { flag += 4; }
switch (flag) {
case 0:
System.out.println (i);
break;
case 1:
System.out.println ("Fizz");
break;
case 2:
System.out.println ("Buzz");
break;
case 3:
System.out.println ("FizzBuzz");
break;
case 4:
System.out.println ("Pop");
break;
case 5:
System.out.println ("PopQuiz!");
break;
case 6:
System.out.println ("PopRocks");
break;
case 7:
System.out.println ("A busy day");
break;
default:
System.out.println ("****ERROR ERROR****");
break;
}
}