Нужна помощь с этим java-кодом, включающим поток управления для возврата строки значения числа
static String Q3(int a, int b, int c, double lowerBound, double targetValue, double upperBound) { // TODO: If the average of a, b, and c is less than lower bound, return "too low". // If the average of a, b, and c is greater than upper bound, return "too high". // If the average of a, b, and c is within 2.5 of the target value, return "just right". // If the average of a, b, and c is between the upper and lower bounds, // but not within 2.5 of the target value, return "almost". //
Если я запущу это
System.out.println(Q3(74, 9, 48, 18.4, 38.4, 112.1)); System.out.println(Q3(22, 8, 16, -9.0, 38.3, 124.5)); System.out.println(Q3(31, 32, 35, 20.7, 35.1, 88.2)); System.out.print(Q3(22, 8, 16, -9.0, 38.3, 124.5));
Я должен получить почти, в самый раз, в самый раз и почти . Я продолжаю получать
almost null null null
Что я уже пробовал:
static String Q3(int a, int b, int c, double lowerBound, double targetValue, double upperBound) { // TODO: If the average of a, b, and c is less than lower bound, return "too low". // If the average of a, b, and c is greater than upper bound, return "too high". // If the average of a, b, and c is within 2.5 of the target value, return "just right". // If the average of a, b, and c is between the upper and lower bounds, // but not within 2.5 of the target value, return "almost". // // 22, 8, 16, -9.0, 38.3, 124.5 // 31, 32, 35, 20.7, 35.1, 88.2 -- avg=36.667 // 74, 9, 48, 18.4, 38.4, 112.1 == 43.6666667 // 22, 8, 16, -9.0, 38.3, 124.5 == 15.23 35.8 40.8 double avg = (a+b+c)/3; String result = null; if(avg < lowerBound){ result = "too low"; } else if(avg > upperBound){ result = "too high"; } else if(targetValue - 2.5 <= avg && avg <= targetValue + 2.5){ result = "just right"; } else if(lowerBound < avg && avg < upperBound && targetValue - 2.5 < avg && targetValue + 2.5 < avg){ result = "almost"; } else{ return result; } return result; }
NotPolitcallyCorrect
В какой помощи вы нуждаетесь? В чем вопрос? Что открыл вам отладчик, когда вы прошли через свой код?
Member 13042098
Мой вопрос заключается в том, почему я продолжаю получать разные выходные значения, которые я должен получить почти, просто правильно, просто правильно и почти. Но мой вопрос заключается в том, почему я продолжаю получать null и правильно ли управляющее утверждение, учитывая данное условие.
NotPolitcallyCorrect
Вы получаете результат, потому что ваши входные данные неверны. Например, среднее значение 22, 8, 16, использующее вашу целочисленную математику, равно 15, а не 15.23 (и 15.23 тоже неверно), и оно даже не близко к вашему целевому значению 38,3. из-за этого он не выполняет все ваши условия if, и вы возвращаете значение по умолчанию null. Научитесь пользоваться отладчиком, и вы сами сможете найти подобные проблемы.