可能重复:
Switch without break
我正在制作一个小型计算器应用程序,当点击计算按钮时,会运行一个switch语句,但产生的数字不是它应该是的,我测试了我的输入,他们在这里工作的是switch语句:
switch (currentOp)
{
case "+" :
answer = Float.toString(inp1 + inp2);
case "-" :
answer = Float.toString(inp1 - inp2);
case "X" :
answer = Float.toString(inp1 * inp2);
case "/" :
answer = Float.toString(inp1 / inp2);
}
答案 0 :(得分:10)
只是对其他答案的补充,使用多态通常更倾向于切换案例:
public enum Operation {
ADDITION {
@Override
public float compute(float a, float b) {
return a + b;
}
},
SUBTRACTION {
@Override
public float compute(float a, float b) {
return a - b;
}
},
PRODUCT {
@Override
public float compute(float a, float b) {
return a * b;
}
},
DIVISION {
@Override
public float compute(float a, float b) {
return a / b;
}
};
public abstract float compute(float a, float b);
}
...
answer = currentOp.compute(inp1, inp2);
答案 1 :(得分:8)
你忘了打破所以你的案件陈述正在逐渐消失。试试这个:
case "+" : answer = Float.toString(inp1 + inp2); break;
case "-" : answer = Float.toString(inp1 - inp2); break;
case "X" : answer = Float.toString(inp1 * inp2); break;
case "/" : answer = Float.toString(inp1 / inp2); break;
相关文档
答案 2 :(得分:7)
见case fallthrough。如果你不在每个案例之间中断,那么下一个案例也将被执行,直到达到break
。
break语句是必要的,因为没有它们,语句就可以了 switch blocks fall through:匹配大小写后的所有语句 标签按顺序执行,无论表达式如何 后续案例标签,直到遇到break语句。