2016-10-31 24 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"; 
    } 

他のすべてのを。希望は私を理解することができます。英語のため申し訳ありません笑

は、あなたが比較、または単にのparseInt(「あなたの文字列」)のために整数を使用する必要があります良い日

+4

文字列を比較しています。これは、文字セット内で '9 'が' 1'の後に来るため、 '' 90 ">" 100 "'がTRUEです。 –

+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

を持っています。

+0

にする必要があります。それを斜めに読んで、それを編集してください。ありがとう –

0

のすべてを削除することができます。数値比較の代わりに、実際に文字列内の文字の位置をASCII位置で比較していると思います。

この値をint型に解析し、文字列ではなく数値と比較する必要があります。

関連する問題