Java Switch 语句

2022-09-04 00:35:24

当我尝试处理特殊情况时,我在使用switch语句时遇到问题。例如,我有3个案例:A,B,C。

  • 对于A,我想做statement_1和statement_3。
  • 对于B,我想做statement_2和statement_3。
  • 对于 C,我什么都不想做

如果我使用 if-else 语句,它将如下所示:

 if ( not C){
    do statement_3

   if B
      do statement 2
   else if A
      do statement 1

 }

如果我想使用switch语句做同样的事情,我有一些麻烦。

switch (variable){
case A:  do statement_1
case B: do statement_2
// how to do statement 3 here?  
}

我试图避免重复的代码。所以我在想如何使代码尽可能简单。

更新 1:

  1. 为了使我的代码/问题更清晰,我只想使我的代码尽可能简单/清晰,这就是为什么我想使用switch语句而不是if-else。另外,我听说switch语句通常比if-else更快。(我不是100%确定)。

  2. 我想使用开关案例,因为案例A,B,C是枚举类型。它们不是可变的。很抱歉造成混淆。

  3. 每个语句都超过 10 行代码。这就是为什么我不想做以下事情:

    switch (enum variable) {
    case A:
      statement1
      statement3
     break;
    case B:
      statement2
      statement3
     break;
    

    }


答案 1

我建议准确定义应该执行哪些状态:

switch (variable){
    case A: 
        statement_1();
        statement_3();
        break;
    case B: 
        statement_2();
        statement_3();
        break;
}

对于更新 3:

为这 10 行创建方法:

public void statement_1() {
    //your 10 lines of code
}

如果你总是执行statement_3,除了情况C,你可以在编写它们时使用if/else-blocks。

但在我看来:准确定义在这种情况下必须做什么,如果你有少量的案例。对其他人来说更容易阅读


答案 2

您可以执行以下操作:

switch (variable){
  case A:  do statement_1; do statement_3; break;
  case B:  do statement_2; do statement_3; break;    
}