繁体   English   中英

Java If 和 else 语句都被执行

[英]Java both If and else statements are executed

我用 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

在编写这样的 if 语句时,您需要将它们与else if链接在一起,基本上是每个ifelse和最后的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");
    }

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

那么,¿发生了什么? 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");
}

您应该在后续语句中使用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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM