我刚刚开始使用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语句?
我想我可以使用一种方法创建一个类,并且根据我们传递的内容将执行正确的操作。但是我必须在那里做一个开关声明,所以这没有任何意义。
答案 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();