Java If和else语句均被执行

时间:2020-10-15 22:41:21

标签: java

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

3 个答案:

答案 0 :(得分:4)

在编写类似if的语句时,您需要将它们与else if链接在一起,基本上是每个else的{​​{1}}和最后一个if。发生的事情是您在说“如果是这个。如果是这个。如果是这个”等。它正在测试最后一个else,由于它不是正斜杠,因此您将进入另一个。

尝试一下:

if

答案 1 :(得分:2)

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

那么,发生了什么事? 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 if / else语句

else

答案 2 :(得分:2)

后面的语句应该使用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都会被分别求值,而只有FINAL if会作为一个或另一个被放在一起。

if else