1

在我目前正在处理的一个程序中,我正在使用一个 switch 语句,在许多情况下会产生相同的结果。我当前代码的相关位如下所示:

int[] vinArray = new int[17];
    for(int x=0;x<17;x++)
    {
        v = vinString.substring(x,x+1);

        switch(v)
        {
            case "A": vinArray[x]=1; break;
            case "B": vinArray[x]=1; break;
            case "C": vinArray[x]=1; break;
            case "D": vinArray[x]=1; break;
            case "E": vinArray[x]=1; break;
            case "F": vinArray[x]=1; break;
            case "G": vinArray[x]=1; break;
            case "H": vinArray[x]=1; break;
            case "J": vinArray[x]=2; break;
            case "K": vinArray[x]=2; break;
            case "L": vinArray[x]=2; break;
            case "M": vinArray[x]=2; break;
            case "N": vinArray[x]=2; break;

        }
}

我想知道他们是否是一种合并执行该操作的案例的方法是这样的方式(伪代码):

case "A", "B", "C", "D", "E", "F", "G", "H": vinArray[x]=1; break;
4

3 回答 3

2

是的,可以这样完成:

case "A": 
case "B": 
case "C": 
case "D": 
    vinArray[x]=1; 
    break;

另外,请注意,您缺少一些;在你的陈述中。

于 2015-04-01T22:35:38.493 回答
2

是的你可以。我确定其他人正在为此努力,但在这种情况下,我认为更好的解决方案是

char v = vinString.charAt(x);
if (v >= 'A' && v <= 'H') {
    vinArray[x]=1;
} else if (v >= 'J' && v <= 'N') {
    vinArray[x]=2;
} 
于 2015-04-01T22:36:55.130 回答
1

只需省略案例之间的中断即可:

case "A":
case "B":
case "C": // etc
  vinArray[x] = 1;
  break;
case "J":
case "K": // etc
  vinArray[x] = 2;
  break;
于 2015-04-01T22:34:05.313 回答