【问题标题】:Java both If and else statements are executedJava If 和 else 语句都被执行
【发布时间】:2020-10-15 22:41:21
【问题描述】:

我用 Java 编写了一个小控制台应用程序,它由 If 和 else 语句组成。
在输出中,正确的 If 和 else 语句都被执行。
怎么可能修复?有什么问题?

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    System.out.println("Enter a first number");
    int FirstNum = in.nextInt();

    System.out.println("Enter an Operator");
    String Operator = in.next();

    System.out.println("Enter a second number");
    int SecondNum = in.nextInt();

    try{
        if(Operator.equals("+")){
            System.out.println(FirstNum + SecondNum);
        }
        if (Operator.equals("-")){
            System.out.println(FirstNum - SecondNum);
        }
        if (Operator.equals("*")){
            System.out.println(FirstNum * SecondNum);
        }
        if (Operator.equals("/")) {
            System.out.println(FirstNum / SecondNum);
        }
        else {
            System.out.println("invalid Operator");
        }
    }
    catch (Exception e){
        System.out.println("Invalid Operator or number");
    }
}

}

输出示例:

Enter a first number
1
Enter an Operator
+
Enter a second number
2
3
invalid Operator

Process finished with exit code 0

JDK:java 15

【问题讨论】:

  • Java 命名约定使用大写字母开始类名;方法、参数和变量以小写字母 (secondNum) 开头。

标签: java


【解决方案1】:

在编写这样的 if 语句时,您需要将它们与else if 链接在一起,基本上每个if 都有一个else,最后一个else。发生的事情是你在说“如果这个。如果这个。如果这个”等等。它正在测试最后一个 if 并且由于它不是正斜杠,所以你正在进入 else。

试试这个:

    if(Operator.equals("+")){
        System.out.println(FirstNum + SecondNum);
    }
    else if (Operator.equals("-")){
        System.out.println(FirstNum - SecondNum);
    }
    else if (Operator.equals("*")){
        System.out.println(FirstNum * SecondNum);
    }
    else if (Operator.equals("/")) {
        System.out.println(FirstNum / SecondNum);
    }
    else {
        System.out.println("invalid Operator");
    }

【讨论】:

  • 是的,谢谢你,以及所有回答的人。我是 Java 新手,之前没有遇到过这样的问题
【解决方案2】:

您应该在后续语句中使用else if。如果您只使用if ... if ... if ... else,那么基本上每个if 都是单独评估的,并且只有最终的if else 被放在一起作为一个或另一个。

try{
    if(Operator.equals("+")){
        System.out.println(FirstNum + SecondNum);
    }
    else if (Operator.equals("-")){
        System.out.println(FirstNum - SecondNum);
    }
    else if (Operator.equals("*")){
        System.out.println(FirstNum * SecondNum);
    }
    else if (Operator.equals("/")) {
        System.out.println(FirstNum / SecondNum);
    }
    else {
        System.out.println("invalid Operator");
    }
}
catch (Exception e){
    System.out.println("Invalid Operator or number");
}

【讨论】:

    【解决方案3】:

    首先:不可能同时执行两个语句。

    那么,¿发生了什么事? if/else 结构只是最后两行。即:如果运算符不是/,则代码将执行else语句。

    你需要一个 if/else if/else 语句

    if(Operator.equals("+")){
        System.out.println(FirstNum + SecondNum);
    }
    else if (Operator.equals("-")){
        System.out.println(FirstNum - SecondNum);
    }
    else if (Operator.equals("*")){
        System.out.println(FirstNum * SecondNum);
    }
    else if (Operator.equals("/")) {
        System.out.println(FirstNum / SecondNum);
    }
    else {
        System.out.println("invalid Operator");
    }
    

    【讨论】:

      最近更新 更多