我想用java代碼切換到相同的execute?我怎麼能做到這一點由java我想用if-else替換java代碼來切換
if(ave>=90.0)
return 'A';
else if(ave>=80.0)
return 'B';
else if(ave>=70.0)
return 'C';
else if(ave>=60.0)
return 'D';
else
return 'F';
我想用java代碼切換到相同的execute?我怎麼能做到這一點由java我想用if-else替換java代碼來切換
if(ave>=90.0)
return 'A';
else if(ave>=80.0)
return 'B';
else if(ave>=70.0)
return 'C';
else if(ave>=60.0)
return 'D';
else
return 'F';
直觀的解決方案是:這是不可能的。
交換機需要一組謹慎的元素。號範圍是無限的,你不能做
switch(something) {
case 90.0:
case 90.000000000001:
....
有一個辦法,你可以做到這一點,雖然:轉換至一些數字:
private static int toRangeIndex(double d) {
if (d >= 90.0)
return 0;
else if (d >= 80.0)
return 1;
else if (d >= 70.0)
return 2;
else if (d >= 60.0)
return 3;
else
return 4;
}
public static double sumColoumn(double[][] m, int coloumnIndex) {
switch (toRangeIndex(ave)) {
case 0:
return 'A';
case 2:
return 'B';
case 3:
return 'C';
case 4:
return 'D';
default:
return 'F';
}
}
這顯然是在沒有更好的你案件。但有些情況下你可以使用這種技術。
不可能直接,switch
需要完全匹配。
你可以做的是寫功能,如:
int classify(double avg) {
// perform some if-else chain, or loop with test inside, or calculation:
return (int)(avg/10.0);
}
然後在開關使用返回值:
switch (classify (avg)) {
case 10: // average of exact 100.0 gives 10, let's not F that...
case 9:
return 'A';
case 8:
return 'B';
//...
default:
return 'F';
}
但是,在特定情況下,它只是移動如果...梯子變成不同的功能,並且可能不是個好主意。所以不要這樣做:-)。
或者說,如果你這樣做,這樣做,因爲它使代碼更易於理解和維護(在這裏它在我看來沒有),而不是因爲你要使用switch
聲明。
int findIndex(double ave){
int index=(int)(ave/10.0);
if(index>=9)
return 9;
else
return index;
}
switch (findIndex(ave)) {
case 9:
return 'A';
case 8:
return 'B';
case 7:
return 'C';
case 6:
return 'D';
default:
return 'F';
}
我瑤池回答
switch(t1)
{
case 100: case 99: case 98: case 97:case 96:case 95:case 94:case 93:case 92:case 91:case 90:
cr='A';
break;
case 89: case 88: case 87: case 86:case 85:case 84:case 83:case 82:case 81:case 80:
cr='B';
break;
case 79: case 78: case 77: case 76:case 75:case 74:case 73:case 72:case 71:case 70:
cr='C';
break;
case 69: case 68: case 67: case 66:case 65:case 64:case 63:case 62:case 61:case 60:
cr='D';
break;
default:
cr = 'F';
break;
}
神奇。寫一些代碼。 –
資本D是ascii 68,所以你可以做strVar =(Math.max(Math.min(68-(90-ave)/ 10,65)),68).toString();但可能不適用於單個字符,也許只有字符串 –
缺乏'E'故意? – Pshemo