Вызов Else if в методе типа calc(), возвращающий неверное значение

63
4

public double calcTuition()
{
if (isGraduating == 'y')
{
return (Math.round((creditHours * 90.00 * 100.0))) / 100.0;
}
else if (isGraduating == 'n' && creditHours > 21)
{
return (Math.round(1000.0 + (creditHours - 21) * 90.00 * 100.0)) /100.0;
}
else if (isGraduating == 'n')
{
return (Math.round((1000.0 * 100.0))) /100.0;
}

}

У меня есть этот фрагмент кода Java здесь, который продолжает говорить мне, что он не возвращает двойник, как это предполагается, это меня озадачивает, почему. Единственное, что я мог придумать, это "creditHours", поэтому я отбросил их в два раза, и это не имело никакого значения. Должен ли я использовать аргумент case здесь, а не else, если?

EDIT: Большое спасибо за невероятно быстрые ответы. На самом деле было довольно удивительно быть честным, я имею в виду, глядя на тупую ошибку, которую я сделал, я не знаю, как половина из вас ответила на них, я уверен, что снова и снова, и все еще терпение, чтобы заставить их задуматься, Как только я услышал, как бронко сказал "дефолт" на своем посту, я точно знал, что случилось. Еще раз спасибо, это действительно фантастическое сообщество.

спросил(а) 2021-01-25T21:58:47+03:00 4 месяца, 4 недели назад
1
Решение
89

То, что видит компилятор, - это то, что нужно делать в трех случаях, но он не знает, что делать по умолчанию. Что делать, если ни одно из условий if возвращает true?

Чтобы ваша программа работала, вам следует добавить оператор возврата по умолчанию или сделать последнее, else if только else

ответил(а) 2021-01-25T21:58:47+03:00 4 месяца, 4 недели назад
45

Вы всегда можете вставить строку отладки перед возвратом, чтобы вы могли видеть, что такое фактическое значение.

Вы всегда должны возвращать какое-то значение в java, в этом коде все случаи могут быть ложными, поэтому у вас не будет двойного возврата.

ответил(а) 2021-01-25T21:58:47+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема