其他条件每次都执行。如果输入为“ 11”,答案为“ f”而不是“ D”,我知道最后一个条件应该是其他情况,但根据输入的逻辑,输出应为“ D”
function getGrade(score) {
let grade;
var score1 = Number(score);
// Write your code here
if (score1 > 25 && score <= 30)
grade = "A";
else if (score1 > 20 && score <= 25)
grade = "B";
else if (score1 > 15 && score <= 20)
grade = "C";
else if (score1 > 10 && score <= 15)
grade = "D";
else if (score1 > 5 && score <= 10)
grade = "E";
else (score1 > 0 && score <= 5)
grade = "F";
return grade;
}
答案 0 :(得分:3)
它是复制粘贴吗?那是一个错字问题。
else (score1 > 0 && score <= 5)
grade = "F";
if
在这里丢失。因此,(score1 > 0 && score <= 5)
被解释为要做的事情(因此,对一个表达式求值),并且下一行在任何else / if分支之外,并且总是总是被执行。
答案 1 :(得分:1)
您可以在else if
周围使用括号。同样,对于最后一个条件,您可以简单地使用else
代替else if
function getGrade(score) {
let grade;
var score1 = Number(score);
console.log(score1)
// Write your code here
if (score1 > 25 && score <= 30) {
grade = "A";
} else if (score1 > 20 && score <= 25) {
grade = "B";
} else if (score1 > 15 && score <= 20) {
grade = "C";
} else if (score1 > 10 && score <= 15) {
grade = "D";
} else if (score1 > 5 && score <= 10) {
grade = "E";
} else {
grade = "F";
}
return grade;
}
console.log(getGrade(11))
答案 2 :(得分:1)
一种更好的方法是使用early exit paradigm,从错误的值开始,然后采用取决于之前条件的条件阶梯。
function getGrade(score) {
var score1 = Number(score);
if (isNaN(score1) || score1 > 30 || score1 < 0) return;
if (score1 > 25) return "A";
if (score1 > 20) return "B";
if (score1 > 15) return "C";
if (score1 > 10) return "D";
if (score1 > 5) return "E";
return "F";
}