Если вы переключите ваше последнее case
на default
вместо действительного значения, это устранит необходимость возвращать что-либо после оператора switch
.
В более широком смысле, ваш if
заявления внутри каждого case
являются подозрительными.Как можно grade == 1
и grade >= 90
?Единственный, который может сработать, это случай 6, так как 6 также <40. Вы пытаетесь использовать 1-6 в качестве логической метки, но на самом деле JVM сравнивает значение <code>grade с этими числамирешить, какой случай выполнить.
Я думаю, что есть более простой способ выразить эту логику.Похоже, что grade
будет их числовой оценкой (то есть между 0 и 100, хотя в теории это также может быть отрицательным), поэтому я бы отбросил оператор switch
и просто использовал бы if / else:
if (grade >= 90) {
return 'O';
} else if (grade >= 80 && grade < 90) {
return 'E';
} else if (grade >= 70 && grade < 80) {
return 'A';
} else if (grade >= 55 && grade < 70) {
return 'P';
} else if (grade >= 40 && grade < 55) {
return 'D';
} else {
return 'E';
}
Обратите внимание, что последнее утверждение просто else
без каких-либо условий.Это заставляет его работать, как в случае default
в выражении switch
: он будет отлавливать любое значение, которое не соответствует другим критериям.