我怎样才能使用具有以前所有情况的案例的开关盒

问题描述 投票:0回答:2

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

java switch-statement
2个回答
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
...

(Mis)使用breaks

这是相当丑陋的,我不会推荐它,但它真的取决于个人喜好(以及你希望代码在未来有多容易阅读和维护)。

如果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
    ...

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.