Java Switch 语句 - “or”/“and” 是否可能?

2022-08-31 12:27:16

我实现了一个字体系统,通过char switch语句找出要使用的字母。我的字体图像中只有大写字母。我需要这样做,例如,“a”和“A”都具有相同的输出。与其拥有2倍的案例数量,不如如下所示:

char c;

switch(c){
case 'a' & 'A': /*get the 'A' image*/; break;
case 'b' & 'B': /*get the 'B' image*/; break;
...
case 'z' & 'Z': /*get the 'Z' image*/; break;
}

这在Java中可能吗?


答案 1

您可以通过省略该语句来使用 switch-case fall through。break;

char c = /* whatever */;

switch(c) {
    case 'a':
    case 'A':
        //get the 'A' image;
        break;
    case 'b':
    case 'B':
        //get the 'B' image;
        break;
    // (...)
    case 'z':
    case 'Z':
        //get the 'Z' image;
        break;
}

...或者你可以在开始之前规范化为小写大写switch

char c = Character.toUpperCase(/* whatever */);

switch(c) {
    case 'A':
        //get the 'A' image;
        break;
    case 'B':
        //get the 'B' image;
        break;
    // (...)
    case 'Z':
        //get the 'Z' image;
        break;
}

答案 2

AND的例子:110 & 011 == 010,这都不是你要找的东西。

对于OR,只需有2个案例,而1号没有中断。例如:

case 'a':
case 'A':
  // do stuff
  break;