java - 如何在 switch case 中编写多个条件以获得相同的行为?

标签 java switch-statement case

switch (x)
{
case A:
case B:
case C:
.doSomething()
}
有没有办法可以将这 3 个案例放在一行中?例如这样的事情
case A, B, C:

最佳答案

除了删除换行符并将这些 case 全部放在同一行之外,不。

您必须拥有三个 case 关键字和三个 :

如果您想了解详细信息,请参阅section 14.11 in the JLS 。特别是:

SwitchLabel:
    case ConstantExpression :
    case EnumConstantName :
    default :

语法中没有任何模式可以接受类似于 SwitchLabelcase A,B,C: 之类的内容。

不过,当多个案例执行相同的操作时,按照您的示例构建案例是一种常见的做法:

switch (value) {
case 1:
case 3:
case 5:
    System.out.println("It's a positive odd number less than 7!"); 
    break;
case 4:
case 8:
    System.out.println("It's a multiple of 4 between 1 and 9!");
    break;
default:
    System.out.println("It's just another boring number.");
    break;
}

Java程序员在阅读这样的代码时一般都会有一个清晰的理解。将多个案例放在一行上(即没有换行符)的情况要少得多,并且典型的程序员不会一眼就清楚地理解(他们可能只是认为您不小心删除了换行符)。

关于java - 如何在 switch case 中编写多个条件以获得相同的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761922/

相关文章:

java - sendKeys 到 contentEditable div 在 Internet Explorer 中不起作用

java - 如何在 Sonar OpenJpa 方法中忽略 pcSet/pcGet?

java - java中switch语句的最佳替代选择

c++ - 我的 Dll 大小因引入大型 switch case 而过大,如何减小 Dll 大小(MSVC C++)?

bash - vi 将 bash 脚本大写或小写突出显示为错误

java - 增加 JVM 中的驻留内存大小是否表示内存泄漏?

java - 当它们被重新分配时,是否有必要将过时的引用设置为 null?

mysql_fetch_array() 问题

c - C 中的 Switch 函数可以处理所有情况

PHP 从 MySQL 查询切换页面