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