避免切换计算器? - Java

时间:2017-12-03 14:54:22

标签: java switch-statement

我刚刚开始使用Java,我使用 GUI 制作了一个计算器,其中包含以下部分代码:

 private void Decider(char c){
    switch (c){
        case '+':
            CalculatorGui.add.operate();
            break;
        case '-':
            CalculatorGui.sub.operate();
            break;`
        case '*':
            CalculatorGui.mul.operate();
            break;
        case '/':
            CalculatorGui.div.operate();
            break;
        default:
            System.out.printf("Invalid\n");
            break;

    }
}

给定的char c取决于用户在界面上单击的按钮。如果他点击+,我们会点击+ -,我们会-等等。每次我打电话给我需要的其他4个班级的方法我制作。

我的问题是:有没有办法避免switch语句?

我想我可以使用一种方法创建一个类,并且根据我们传递的内容将执行正确的操作。但是我必须在那里做一个开关声明,所以这没有任何意义。

1 个答案:

答案 0 :(得分:2)

您可以准备Runnable

的地图
Map<Character, Runnable> map = new HashMap<>();
map.put('+', () -> CalculatorGui.add.operate());
map.put('-', () -> CalculatorGui.sub.operate());
map.put('*', () -> CalculatorGui.mul.operate());
map.put('/', () -> CalculatorGui.div.operate());

然后使用该地图执行相应的操作或默认操作:

map.getOrDefault(c, () -> System.out.println("Invalid")).run();