0

可能重复:
不间断切换

我正在制作一个小型计算器应用程序,当单击计算按钮时,会运行一个 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);
}
4

3 回答 3

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);
于 2012-12-25T20:30:17.433 回答
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;

相关文档

于 2012-12-25T20:24:31.163 回答
7

请参阅案例失败。如果您没有在每种情况之间中断,则下一个也将被执行,直到达到 a 为止break

break 语句是必要的,因为没有它们,switch 块中的语句就会失败:匹配 case 标签之后的所有语句都按顺序执行,无论后续 case 标签的表达式如何,直到遇到 break 语句。

于 2012-12-25T20:25:20.250 回答