所以我在主类中做一个简单的菜单,它具有从0到9的10个选项,我正在使用开关盒来获取选项,然后执行特定的代码,而数字9是在菜单中执行所有选项菜单。 如果option为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 ;
}
}
我希望当option为9时,它将执行之前的所有情况;
答案 0 :(得分:2)
有多种方法可以满足您的需求。我会概述一些。
使用方法
这很简单,而且有些干净并且易于维护。您要做的就是将要在每种情况下执行的代码包装在单独的方法中,然后从开关中调用这些方法。这正是功能的目的。
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
...
(误用)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
...
答案 1 :(得分:0)
我建议使用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;
}