Java Switch语句
当我试图处理特殊情况时,我在使用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:
-
为了使我的代码/问题更清晰,我只想让我的代码尽可能简单/清晰,这就是为什么我想使用switch语句而不是if-else。 另外,我听说switch语句通常比if-else更快。 (虽然我不是100%肯定)。
-
我想使用switch-case,因为案例A,B,C是枚举类型。 它们不是变数。 对此感到抱歉。
-
每个语句都超过10行代码。 这就是为什么我不想做以下事情:
switch (enum variable) { case A: statement1 statement3 break; case B: statement2 statement3 break;
}
我建议准确定义应该执行的staments:
switch (variable){ case A: statement_1(); statement_3(); break; case B: statement_2(); statement_3(); break; }
对于Update-3:
为这10行创建方法:
public void statement_1() { //your 10 lines of code }
如果你总是执行statement_3,除了案例C,你可以在编写时使用if / else-blocks。
但在我的诚实意见中:如果你有少量的案例,确切地定义在哪种情况下必须做什么。 对别人来说更容易阅读
你可以这样做:
switch (variable){ case A: do statement_1; do statement_3; break; case B: do statement_2; do statement_3; break; }
为什么不将开关嵌套到if语句中? 这种方式没有重复代码。
if(!C){ statement_3; switch(variable){ case A: statement_1; break; case B: statement_2; break; }
或者使用if语句和switch?
if(!C){ statement_3; } switch(variable){ case A: statement_1; break; case B: statement_2; break;
我经常发现介绍enum
增加了清晰度。 在这里,我想每个enum
是一个可以通过许多过程解决的问题:
enum Issue { A { void handleIt () { statement_1(); statement_3(); } }, B { void handleIt () { statement_2(); statement_3(); } }, C { void handleIt () { // Do nothing. } }, D { void handleIt () { A.handleIt(); B.handleIt(); } }; abstract void handleIt(); }
请注意,您可以使用其他问题的解决方案来处理某些问题(参见我的enum
)。
如果一个案例有超过2-3个语句,那么从可读性和清晰代码的角度来看,它们可以作为单独的方法提取它们:
switch (variable){ case A: handleCaseA(); break; case B: handleCaseB(); break; default: handleDefaultCase(); break; }
switch (variable) { case A: do statement_1; do statement_3; break; case B: do statement_2; do statement_3; break; }
中断可以节省大量执行时间,因为它“忽略”了交换机块中所有其余代码的执行
public class SwitchExample { public static void main(String[] args) { int number=10; switch(number){ case 10: System.out.println("10");break; case 20: System.out.println("20");break; case 30: System.out.println("30");break; default:System.out.println("Not in 10, 20 or 30"); } } }
输出为10
这里你必须以这种方式使用if statement
,因为在switch
中通常也有default
值。
if (letter == 'A' || letter == 'B') { System.out.println("Statement 3 ");} switch (letter) { case 'A': System.out.println("Statement 1 "); break; case 'B': System.out.println("Statement 2 "); break; case 'C': System.out.println(); break; default: System.out.println("You entered wrong value"); }