Вы неправильно используете оператор switch
.
Обычно он используется с фиксированными значениями, например
switch (value) {
case 1:
// do something for value == 1
break;
case 2:
// do something for value == 1
break;
//...
}
Кроме того, для некоторых значений преобразование не выполняется (90 , 80 и 70), поскольку у вас есть странные проверки границ с использованием непоследовательных <
и <=
. (Измените >
на >=
в приведенном ниже коде, если вам нужно включить младшие десятки)
В вашем случае последовательность if
/ else
кажется более подходящей:
function gradeConverting(grade) {
let gradePercent = grade + "%";
let americanGrade
// note: you should probably specify what happens if grade > 100
if (grade > 90) {
americanGrade = "A";
} else if (grade > 80) {
americanGrade = "B";
} else if (grade > 70) {
americanGrade = "C";
} else if (grade > 60) {
americanGrade = "D";
} else if (grade > 50) {
americanGrade = "E";
} else {
americanGrade = "F";
}
return console.log("You got a " + americanGrade + " " + gradePercent + "!");
}
gradeConverting(55);
Обратите внимание, что вы можете сократить код, например, так:
function toAmericanGrade(grade) {
if (grade < 50) {
return "F";
} else if (grade >= 100) {
return "A";
}
// `"F".charCodeAt(0) - 1 + 5` = `74`
return String.fromCharCode(74 - Math.floor((grade)/10))
}
function gradeConverting(grade) {
let gradePercent = grade + "%";
let americanGrade = toAmericanGrade(grade)
return console.log("You got a " + americanGrade + " " + gradePercent + "!");
}
gradeConverting(55);
// test
for(let i = 45; i <= 100; i++) {
gradeConverting(i);
}