как можно заменить много if
Как я могу упростить этот метод, чем можно заменить множество if?
private int initialPrintIndex(int printNumber){
if(printNumber == 1){
return 0;
}
if(printNumber == 2){
return 4;
}
if(printNumber == 3){
return 8;
}
if(printNumber == 4){
return 12;
}
if(printNumber == 5){
return 16;
}
if(printNumber == 6){
return 20;
}
if(printNumber == 7){
return 24;
}
if(printNumber == 8){
return 28;
}
if(printNumber == 9){
return 32;
}
if(printNumber == 0){
return 36;
}
throw new IllegalArgumentException("");
}
Ответы (4 шт):
Автор решения: Igor
→ Ссылка
int[] printValues = new int[] {36, 0, 4, ...};
return printValues[printNumber];
Автор решения: fff894299
→ Ссылка
private int initialPrintIndex(int printNumber){
int x = -1;
switch(printNumber){
case 1:
x = 0;
break;
case 2:
x = 4;
break;
case 3:
x = 8;
break;
case 4:
x = 12;
break;
case 5:
x = 16;
break;
case 6:
x = 20;
break;
case 7:
x = 24;
break;
case 8:
x = 28;
break;
case 9:
x = 32;
break;
case 0:
x = 36;
break;
default:
throw new IllegalArgumentException("");
}
return x;
}
Замена if на switch ...
Автор решения: fff894299
→ Ссылка
private int initialPrintIndex( int x ) {
int[] printValues = new int[] { 0, 4, 8, 12, 16, 20, 24, 28, 32, 36 };
if( x < printValues.length || x >= printValues.length ) {
throw new IllegalArgumentException("");
}
return printValues [ x ] ;
}
Автор решения: Zombotron
→ Ссылка
Там же все кратное 4. В "одну строку" делается:
private int initialPrintIndex(int printNumber){
if (printNumber >= 0 && printNumber < 10){
return (((printNumber+9)%10)*4);
}else{
throw new IllegalArgumentException("");
}
}