所以我在主类中做了一个简单的菜单,它有10个选项,从0到9,我使用开关盒获取选项然后执行某个代码,第9个是在菜单中执行所有选项。如果选项是9,那么它如何才能完成我之前的所有案例。
public static void main(String[] args) {
switch (option) {
case 1:
do A;
break;
case 2:
do B;
break;
case 3:
do C;
break;
case 4:
do C;
break;
case 5:
do C;
break;
case 6:
do C;
break;
case 9:
do case 1 ;
do case 2 ;
do case 3 ;
do case 4 ;
do case 5 ;
do case 6 ;
}
}
我期待当选项为9时,它会执行之前的所有情况;
有多种方法可以实现您的需求。我将概述几个。
使用方法
这很简单,有点干净,易于维护。您需要做的就是在每种情况下以单独的方法包装您想要执行的代码,然后在交换机中调用这些方法。这正是函数的用途。
switch(option){
case 1:
doA();
break;
case 2:
doB();
break;
...
// other cases
...
case 9:
doA();
doB();
...
// other method calls
...
break;
}
切换到if
声明
这是非常自我解释的,只需检查选项是否是每个不同的情况或选项9。
if(option == 1 || option == 9){
do A;
}
if(option == 2 || option == 9){
do B;
}
...
// other cases
...
(Mis)使用break
s
这是相当丑陋的,我不会推荐它,但它真的取决于个人喜好(以及你希望代码在未来有多容易阅读和维护)。
如果option
是9
,那么我们翻转一个标志来关闭switch语句中的所有中断。这有效地使其下面的所有其他情况只是线性执行(因为禁用开关的中断被禁用)。
boolean isCase9 = false;
switch(option){
case 9:
isCase9 = true;
case 1:
doA();
if(!isCase9){
break;
}
case 2:
doB();
if(!isCase9){
break;
}
...
// other cases
...
我建议用switchMethod
定义一个方法(让我们称之为switch case
) - 当所有选项只有0到8时。
public void switchMethod(option) {
switch (option) {
case 1:
do A;
break;
case 2:
do B;
break;
case 3:
do C;
break;
....
case 8:
do X;
break;
}
}
在main
:
if (option < 9) {
switchMethod(option)
} else {
for (int i = 0; i <9; i++)
switchMethod(i)
}
这样您就不会编写重复的代码,它会执行您请求的逻辑。
另一种方法是执行类似的重复代码:
switch (option) {
case 1:
do A;
break;
case 2:
do B;
break;
case 3:
do C;
break;
case 4:
do C;
break;
case 5:
do C;
break;
case 6:
do C;
break;
case 9:
do A;
do B;
do C;
....
break;
}