2015-04-01 5 views
0

В программе, над которой я сейчас работаю, я использую оператор switch со многими случаями, дающими тот же результат. Соответствующий бит мой текущий код выглядит следующим образом:Как консолидировать случаи в инструкции 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; 

ответ

1

Просто опустить разрыв между случаями провалиться:

case "A": 
case "B": 
case "C": // etc 
    vinArray[x] = 1; 
    break; 
case "J": 
case "K": // etc 
    vinArray[x] = 2; 
    break; 
2

Да, это может быть достигнуто, как это:

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

Кроме того, будьте осторожны, вам не хватает некоторых; в ваших заявлениях.

2

Да, вы можете. Я уверен, что другие работают над этим, но в этом случае я думаю, что лучшим решением будет

char v = vinString.charAt(x); 
if (v >= 'A' && v <= 'H') { 
    vinArray[x]=1; 
} else if (v >= 'J' && v <= 'N') { 
    vinArray[x]=2; 
} 
Смежные вопросы