4 回答
TA贡献1829条经验 获得超4个赞
我建议使用 switch 代替:
switch (operator) {
case '+':
System.out.println("+");
break;
case '-':
System.out.println("-");
break;
/* Other operators */
default:
System.out.println("Please just pick an operator..");
}
TA贡献1784条经验 获得超2个赞
这里的问题是您没有完全理解 if else-if else 语句。
“If”的意思是:如果这个条件语句为真,则执行括号中的代码。
“If-else”的意思是:如果上面的语句(if 和 else-if)不成立,则执行此代码。
“else”的意思是:如果上面的语句(if 或 else-if)不成立,则执行此代码。
鉴于此,我确信您看不到您的错误。您所有的“if”语句都会评估是否满足此条件,然后执行此操作。然而您确实想要使用“else-if”,如果这是真的,则仅执行以下代码,而排除其余条件。您让 else 子句选择默认值是正确的,但是由于您没有使用“else-if”,因此它实际上会编译为 if 该语句不正确( else 子句之前的语句):
if(operator=='%') { System.out.println("The module is: "+(num1%num2)); }
然后执行else语句,这不是你想要的。
我建议您真正弄清楚您的代码实际上根据机器指令编译成什么。
TA贡献1841条经验 获得超3个赞
你有“if if if if else”你想要“if else if else if else”。您的else
当前仅适用于if (operator == '%')
TA贡献1839条经验 获得超15个赞
尝试“否则如果”:
if(operator== '+') {
System.out.println("The sum of these numbers is: "+(num1+num2));
}
else if(operator=='-') {
System.out.println("The diff of these numbers is: "+ (num1-num2));
}
else if(operator=='*') {
System.out.println("The result of this multiplication is: "+(num1*num2));
}
else if(operator=='/') {
System.out.println("The division is: "+(num1/num2));
}
else if(operator=='%') {
System.out.println("The module is: "+(num1%num2));
}
else {
System.out.println("Please just pick an operator..");
然而, switch 语句会更清晰:
switch(operator) {
case '%':
System.out.println("The module is: "+(num1%num2));
break;
default:
System.out.println("Please just pick an operator..");
}
添加回答
举报