检查两个 if 语句,否则运行第三件事?

问题描述 投票:0回答:1

尝试找到一种解决方案来检查两个不同的 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)
在最后。 任何人都知道如何做到这一点(用任何语言?)。

java if-statement fizzbuzz
1个回答
0
投票

一种方法是使用

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.