2013-12-07 40 views
-3

我想用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'; 
+2

神奇。寫一些代碼。 –

+1

資本D是ascii 68,所以你可以做strVar =(Math.max(Math.min(68-(90-ave)/ 10,65)),68).toString();但可能不適用於單個字符,也許只有字符串 –

+0

缺乏'E'故意? – Pshemo

回答

2

直觀的解決方案是:這是不可能的。

交換機需要一組謹慎的元素。號範圍是無限的,你不能做

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'; 
    } 
} 

這顯然是在沒有更好的你案件。但有些情況下你可以使用這種技術。

+0

看來,OP正試圖避免if()else if()..',而不是用單獨的方法包裝它。 – Pshemo

+0

@Pshemo我知道。我不會這樣做,因爲它只是更多的代碼。但是如果你有一個保持內部狀態爲'double'的對象,那麼添加這樣一個方法是個好主意,這樣代碼就可以使用一個簡單的'switch'。轉換代碼只存在一次,使用轉換值的代碼可以存在多次。 – zapl

2

不可能直接,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聲明。

0
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'; 
} 
0

我瑤池回答

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;  
    }