2015-10-10 27 views
2

我必須使用它作爲switch語句。這是一個switch語句,對嗎?這是否符合轉換條件?

if (dGrade > 93.99) {strFGrade= strA;}        //A= above 94 

    else if (dGrade >= 90.00 && dGrade <= 93.99) {strFGrade= strLA;} //A- = 90-93.99 

    else if (dGrade >= 87.70 && dGrade <= 89.99) {strFGrade= strHB;} //B+= 87.7-89.99 

    else if (dGrade >= 83.33 && dGrade <= 87.69) {strFGrade= strB;} //B= 83.33-87.69 

    else if (dGrade >= 80.00 && dGrade <= 83.32) {strFGrade= strLB;} //B- = 80-83.32 

    else if (dGrade >= 75.00 && dGrade <= 79.99) {strFGrade= strHC;} //C+= 75-79.99 

    else if (dGrade >= 70.00 && dGrade <= 74.99) {strFGrade= strC;} //C= 70-74.99 

    else if (dGrade >= 60.00 && dGrade <= 69.99) {strFGrade= strD;} //D=60-69.99 

    else {strFGrade= strF;}           //F= below 60 
+3

不,switch語句有特殊的語法,它不只是一個if語句類型的名字(但它們是相似的)。看到這個:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html – Zarwan

+2

但公平地說,這個代碼在它的狀態下不能直接轉換成switch命令,除非你使用完全沒有意義的「開關(真)「反模式。 –

+0

非常感謝! –

回答

0

不,這是不可能的,以測試如果一個值處於像switch-statement這樣的區間內。開關語句對於每個單獨的一個類型的值有一個分支,並且如果開啓的值是等於到分支的值,則採用分支。

話雖這麼說,有可能寫了一下你的代碼更緊湊的方式是這樣的:

if  (dGrade >= 94.00) strFGrade = strA; 
else if (dGrade >= 90.00) strFGrade = strLA; 
else if (dGrade >= 87.70) strFGrade = strHB; 
else if (dGrade >= 83.33) strFGrade = strB; 
else if (dGrade >= 80.00) strFGrade = strLB; 
else if (dGrade >= 75.00) strFGrade = strHC; 
else if (dGrade >= 70.00) strFGrade = strC; 
else if (dGrade >= 60.00) strFGrade = strD; 
else strFGrade = strF; 

這裏的技巧是,你可以離開了測試的一半,因爲你已經測試了在更早的if語句中。這並沒有考慮到值可能在之間原始代碼中兩個不同間隔的限制。

塊(與{})在這裏也沒有必要。

並注意傳統的空白使用情況,空間在=的兩側。

3

這不是switch語句。 switch語句的結構如下:

switch (dgrade) { 
    case 90: 
    doSomething(); 
    break; 
    case 100: 
    doSomethingElse(); 
    break; 
    default: 
    do(); 
} 

你的情況,你不能真正使用switch語句,因爲你具備的條件,所以你只能使用if-else語句