Java,嵌套的if、if/else语句来添加单词

Java,嵌套的if、if/else语句来添加单词,java,if-statement,Java,If Statement,我正在做一项作业,我需要做很多需要嵌套if/else的事情。打印前50个斐波那契数,但: 如果数字是3的倍数-打印“Cheese” 如果数字是5的倍数-打印“蛋糕” 如果数字是7的倍数-打印“工厂” 如果数字是3和5的倍数-打印“CheeseCake” 如果数字是3和7的倍数-打印“CheeseFactory” 如果数字是5和7的倍数-打印“CakeFactory” 如果数字是3、5和7的倍数-打印“CheeseCakeFactory” 如果数字是2的倍数-打印“Blah” 在这一点上,我重

我正在做一项作业,我需要做很多需要嵌套if/else的事情。打印前50个斐波那契数,但:

  • 如果数字是3的倍数-打印“Cheese”
  • 如果数字是5的倍数-打印“蛋糕”
  • 如果数字是7的倍数-打印“工厂”
  • 如果数字是3和5的倍数-打印“CheeseCake”
  • 如果数字是3和7的倍数-打印“CheeseFactory”
  • 如果数字是5和7的倍数-打印“CakeFactory”
  • 如果数字是3、5和7的倍数-打印“CheeseCakeFactory”
  • 如果数字是2的倍数-打印“Blah”
在这一点上,我重复这些条件,我相信有一种更干净的方法可以做到这一点:

package Assignment1;

public class CheeseCakeFactory_163003984 {

    public static void main(String[] args) {
        long numberOne = 0;
        long numberTwo = 1;
        long sum = 0;
        int counter = 0;

        String word1 = "Cheese";
        String word2 = "Cake";
        String word3 = "Factory";

        while (counter <= 50) {
            sum = numberOne + numberTwo;
            numberOne = numberTwo;
            numberTwo = sum;
            counter++;

            if (sum % 3 == 0) {
                System.out.print(word1 + ", ");
            } else if (sum % 5 == 0) {
                if (sum % 3 == 0) {
                    System.out.print(word1 + word2 + ", ");
                } else if (sum % 3 == 0) {
                    if (sum % 5 == 0) {
                        if (sum % 7 == 0) {
                            System.out.print(word1 + word2 + word3 + ", ");
                        }
                    }
                    if (sum % 7 == 0) {
                        System.out.print(word1 + word2 + word3 + ", ");
                    } else if (sum % 2 == 0) {
                        System.out.print("Blah, ");
                    } else {
                        System.out.print(sum);

                        if (counter % 10 == 0) {
                            System.out.print("\n");
                        } else {
                            System.out.print(", ");
                        }
                    }
                }
            }
        }
    }
}
包分配1;
公营芝士蛋糕厂{
公共静态void main(字符串[]args){
长数n=0;
长数wo=1;
长和=0;
int计数器=0;
String word1=“Cheese”;
String word2=“蛋糕”;
String word3=“工厂”;

而(counter在“CheeseFactory”、“CakeFactory”和“CheeseCakeFactory”的名字后面有一个很好的理由,这样你就不必重复你的陈述了

假设您有一个数组,其中前50个斐波那契数已经被称为

for(int i = 0; i < numbers.length; i++) {
    System.out.print(numbers[i] + ": ");
    if(numbers[i] % 3 == 0) {
        System.out.print("Cheese");
    }
    if(numbers[i] % 5 == 0) {
        System.out.print("Cake");
    }
    if(numbers[i] % 7 == 0) {
        System.out.print("Factory");
    }
    System.out.println(""); //start a new line
}
for(int i=0;i

我没有讨论如果它是2的倍数会发生什么,因为它是模糊的。如果它是2和3的倍数呢?

在“奶酪工厂”、“蛋糕工厂”和“奶酪蛋糕工厂”的名字背后有一个很好的理由。这样你就不必重复你的陈述了

假设您有一个数组,其中前50个斐波那契数已经被称为

for(int i = 0; i < numbers.length; i++) {
    System.out.print(numbers[i] + ": ");
    if(numbers[i] % 3 == 0) {
        System.out.print("Cheese");
    }
    if(numbers[i] % 5 == 0) {
        System.out.print("Cake");
    }
    if(numbers[i] % 7 == 0) {
        System.out.print("Factory");
    }
    System.out.println(""); //start a new line
}
for(int i=0;i

我没有讨论如果它是2的倍数会发生什么,因为它是不明确的。如果它既是2的倍数又是3的倍数呢?

您可以在同一个
if
语句中检查多个条件,而不是嵌套每个可能的条件。例如,要检查一个数字是否是3和5的倍数,您可以简单地编写:

if(sum % 3 == 0 && sum % 5 == 0) // check if this number is a multiple of 3 and 5
    System.out.print("cheesecake");
使用类似我刚才给出的示例的
if
语句,您可以在不嵌套
if
s的情况下执行所有这些操作,而只使用
else if
s或其他单独的
if
s

如果语句的编写方式令人困惑,可以使用括号将语句分组,以提高可读性:

if((sum % 3 == 0) && (sum % 5 == 0))
    System.out.print("cheesecake");

无论您以何种方式编写,结果都是相同的。

您可以在同一
if
语句中检查多个条件,而不是嵌套每个可能的条件。例如,要检查数字是否是3和5的倍数,您只需编写:

if(sum % 3 == 0 && sum % 5 == 0) // check if this number is a multiple of 3 and 5
    System.out.print("cheesecake");
使用类似我刚才给出的示例的
if
语句,您可以在不嵌套
if
s的情况下执行所有这些操作,而只使用
else if
s或其他单独的
if
s

如果语句的编写方式令人困惑,可以使用括号将语句分组,以提高可读性:

if((sum % 3 == 0) && (sum % 5 == 0))
    System.out.print("cheesecake");

不管您以何种方式编写,结果都是一样的。

这里的想法是,您希望一次构建一条语句,而不是一次构建所有语句。这里我将利用称为
StringBuilder
的工具,它将允许我们简洁地构建我们想要的字符串

如果我们知道这个和可以被3整除,我们就把我们想要的单词加到附加词上

if (sum % 3 == 0) {
    builder.append(word1);
}
if (sum % 3 == 0) {
    builder.append(word1);
}

if(sum % 5 == 0) {
    builder.append(word2);
}
如果我们知道这个和可以被3和5整除,我们就把我们想要的单词加到附加词上

if (sum % 3 == 0) {
    builder.append(word1);
}
if (sum % 3 == 0) {
    builder.append(word1);
}

if(sum % 5 == 0) {
    builder.append(word2);
}
就其他逻辑而言,不需要发生任何特殊情况;简单的
if
条件将得到所需的结果。如果不正确,则不会执行
if


我留下了其他表单(包括偶数表单,实际上也打印出数字-提示:如果您没有打印任何其他单词,您可能需要打印数字)作为读者的练习。

这里的想法是,您希望一次构建一个语句,而不是一次构建所有语句。这里我将利用称为
StringBuilder
的工具,它将允许我们简洁地构建所需的字符串

如果我们知道这个和可以被3整除,我们就把我们想要的单词加到附加词上

if (sum % 3 == 0) {
    builder.append(word1);
}
if (sum % 3 == 0) {
    builder.append(word1);
}

if(sum % 5 == 0) {
    builder.append(word2);
}
如果我们知道这个和可以被3和5整除,我们就把我们想要的单词加到附加词上

if (sum % 3 == 0) {
    builder.append(word1);
}
if (sum % 3 == 0) {
    builder.append(word1);
}

if(sum % 5 == 0) {
    builder.append(word2);
}
就其他逻辑而言,不需要发生任何特殊情况;简单的
if
条件将得到所需的结果。如果不正确,则不会执行
if


我把其他表单(包括偶数表单,实际上也打印出数字-提示:如果您没有打印任何其他单词,您可能需要打印数字)留给读者作为练习。

我尝试了您的代码,它一直在打印单词Cheese

我对它进行了一点重构以满足您的需求(我希望我理解它们:)


我试过你的代码,它一直在打印“奶酪”这个词

我重构了我的