Member 13042098 Ответов: 1

Нужна помощь с этим 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. Научитесь пользоваться отладчиком, и вы сами сможете найти подобные проблемы.

1 Ответов

Рейтинг:
0

Patrice T

else{
    return result;

Когда это возвращение выполняется, результат содержит NULL, то есть вашу логику.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.