2016-10-31 41 views
0

我是新來的。我的if/else if語句有問題。我的if語句「between」給了我錯誤的結果

我得到這個:

if (unalumno.notas >= "90" && unalumno.notas <= "100") { 
     unalumno.notas = "A"; 
    } else if (unalumno.notas >= "80" && unalumno.notas <= "89") { 
     unalumno.notas = "B"; 
    } else if (unalumno.notas >= "70" && unalumno.notas <= "79") { 
     unalumno.notas = "C"; 
    } else if (unalumno.notas >= "60" && unalumno.notas <= "69") { 
     unalumno.notas = "D"; 
    } else if (unalumno.notas <= "59") { 
     unalumno.notas = "F"; 
    } 

所有否則,如果語句給我正確的結果中封,但第一如果繼續給出結果的數字。希望能理解我。對不起,英語笑

有一個好的一天

+4

你比較字符串,這意味着' 「90」> 「100」'爲真,因爲'9'談到之後的字符集'1'。 –

+0

在比較'unalumno.notas = parseInt(unalumno.notas,10)'之前,你應該轉換爲一個整數,然後除去你比較'unalumno.notas'的所有值的引號到 –

回答

6

正如我在我的評論所說,從解析整數和你比較更改爲數字,而不是字符串:

var unalumnoNotas = parseInt(unalumno.notas, 10); 
if (unalumnoNotas >= 90 && unalumnoNotas <= 100) { 
notas = "A"; 
} else if (unalumnoNotas >= 80 && unalumnoNotas <= 89) { 
notas = "B"; 
} else if (unalumnoNotas >= 70 && unalumnoNotas <= 79) { 
notas = "C"; 
} else if (unalumnoNotas >= 60 && unalumnoNotas <= 69) { 
notas = "D"; 
} else if (unalumnoNotas <= 59) { 
notas = "F"; 
} 

此外,如果你拋出一個錯誤或提前返回,如果該值大於100,你可以刪除所有的額外&& <= 89

if (unalumnoNotas > 100) { 
    throw new Error('Number too high'); 
} 

if (unalumnoNotas >= 90) { 
notas = "A"; 
} else if (unalumnoNotas >= 80) { 
notas = "B"; 
} else if (unalumnoNotas >= 70) { 
notas = "C"; 
} else if (unalumnoNotas >= 60) { 
notas = "D"; 
} else if (unalumnoNotas <= 59) { 
notas = "F"; 
} 
1

您應該使用整數進行比較,或者只是parseInt函數(「您的字符串」)。

+0

啊你是對的,我已經對角地讀過它,會編輯它。謝謝 –

0

你是不是比較,你應該比較整數的字符串。您認爲自己在做的不是數字比較,而是實際比較字符串中ASCII字符位置的位置。

您應該將該值解析爲int類型,然後將其與數字而不是字符串進行比較。