【发布时间】:2013-07-23 15:46:00
【问题描述】:
当我尝试处理特殊情况时,我在使用 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?
}
我试图避免重复的代码。所以我在想如何让代码尽可能简单。
更新一:
为了让我的代码/问题更清楚,我只想让我的代码 尽可能简单/清晰,这就是我想使用 switch 语句的原因 而不是 if-else。另外,我听说 switch-statement 通常是 比 if-else 快。 (虽然我不是 100% 确定)。
我想使用 switch-case,因为 Case A、B、C 是枚举类型。他们 不可变。很抱歉造成混乱。
-
每个语句都超过 10 行代码。这就是为什么我不想做以下事情:
switch (enum variable) { case A: statement1 statement3 break; case B: statement2 statement3 break;}
【问题讨论】:
-
这段代码不起作用,因为 Java 6 和更早的版本需要一个原始类型的值。 Java 7 可以处理字符串。
-
switch 不好 - 你不能跳过案例,这是你必须做的,以避免对 statement_3 的调用编码两次
-
if有什么问题?如果开关不是正确的工具,请不要使用它。大多数时候,它不是正确的工具。 -
我觉得if也不错……
-
或Replace Conditional with Polymorphism 去掉 if / switch
标签: java if-statement switch-statement