我该如何使用一个开关盒,它的开关盒能处理所有之前的开关盒

时间:2019-04-13 20:56:10

标签: java switch-statement

所以我在主类中做一个简单的菜单,它具有从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时,它将执行之前的所有情况;

2 个答案:

答案 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

这很丑陋,我不推荐这样做,但这实际上取决于个人喜好(以及将来希望代码变得易于阅读和维护)。

如果option9,那么我们翻转标志以关闭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;
}