Switch Statement Buggy?

时间:2012-12-25 20:23:18

标签: swing switch-statement java

  

可能重复:
  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);
}

3 个答案:

答案 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语句。