Java Switch Case Булевы функции? - PullRequest
0 голосов
/ 27 мая 2018

Я делаю домашнее задание по Java и сталкиваюсь с проблемой, в которой есть код, связанный с преобразованием результатов тестов в буквенные оценки, где должны быть найдены ошибки:

switch(score)
{
case (score > 90):
grade = 'A';
break;
etc...

Везде, где я читал, ивсе, что я пробовал в netbeans, говорит, что логические функции не разрешены.Ошибка в том, что это просто оператор if?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Согласно JLS, параметры операторов case могут быть только литералами или константами int, short, byte, char, String или Enum.

Поэтому, чтобы ответить на ваш вопрос, данный код не будет компилироваться, и да, это должен быть оператор if.

0 голосов
/ 27 мая 2018

Содержимое, связанное с case, должно быть совместимо с типом выражения, используемого в switch.
. Вы используете int (вероятно) в switch, поэтому cases должны иметь значения int (или другой тип, конвертируемый в int, например, char).Проблема в том, что вы предоставляете boolean, который не конвертируется в int и что бы то ни было не то, что вы ищете.

JLS.14.11.Оператор switch действительно заявляет:

Если задан оператор switch, все следующее должно быть истинным, иначе произойдет ошибка времени компиляции:

Каждая константа case, связанная сОператор switch должен быть совместимым по присваиванию с типом Выражения оператора switch (§5.2).

Если два типа не совпадают, вы не хотите использовать switch, а вместо этого используется ряд условных операторов (if-else-if).

...