Java проблема отладки - PullRequest
       0

Java проблема отладки

0 голосов
/ 22 января 2020
class Celsius {
    public static void main(String[] args){
      celsius(0);
    }
    public static void celsius(double fahrenheitTemperature){
        double celsiusTemperature;
        for (fahrenheitTemperature = 0; fahrenheitTemperature <= 20; fahrenheitTemperature++) {
            celsiusTemperature = ((fahrenheitTemperature - 32) * 5) / 9;
            double celsius_rounded = Math.round(celsiusTemperature * 100)/100.0;
            System.out.println("Fahrenheit: " + fahrenheitTemperature + "  Celsius: " + celsius_rounded);


         }
        }
    }

Код работает нормально. Проблема в том, что когда я вызываю метод, какой бы параметр я ни давал, я получаю тот же результат. Если я укажу 20 или 0 в параметре метода Цельсия, я получу те же результаты.

Что я могу сделать для устранения этой проблемы?

Мой результат:

Fahrenheit: 0.0  Celsius: -17.78
Fahrenheit: 1.0  Celsius: -17.22
Fahrenheit: 2.0  Celsius: -16.67
Fahrenheit: 3.0  Celsius: -16.11
Fahrenheit: 4.0  Celsius: -15.56
Fahrenheit: 5.0  Celsius: -15.0
Fahrenheit: 6.0  Celsius: -14.44
Fahrenheit: 7.0  Celsius: -13.89
Fahrenheit: 8.0  Celsius: -13.33
Fahrenheit: 9.0  Celsius: -12.78
Fahrenheit: 10.0  Celsius: -12.22
Fahrenheit: 11.0  Celsius: -11.67
Fahrenheit: 12.0  Celsius: -11.11
Fahrenheit: 13.0  Celsius: -10.56
Fahrenheit: 14.0  Celsius: -10.0
Fahrenheit: 15.0  Celsius: -9.44
Fahrenheit: 16.0  Celsius: -8.89
Fahrenheit: 17.0  Celsius: -8.33
Fahrenheit: 18.0  Celsius: -7.78
Fahrenheit: 19.0  Celsius: -7.22
Fahrenheit: 20.0  Celsius: -6.67

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Ваше 'FOR' l oop инициализирует fahrenheitTempera = 0, тем самым перезаписывая любое переданное вами значение. Решение может быть следующим:

for(dobule i = fahrenheitTemperature; i<=20;i++){
1 голос
/ 22 января 2020

Проблема заключается в том, что для l oop:

 for (fahrenheitTemperature = 0; fahrenheitTemperature <= 20; fahrenheitTemperature++) 

независимо от того, какое значение вы передаете методу, вы устанавливаете это значение равным 0 в начале для l oop. * 1004. *

Измените свой код следующим образом:

public class Celsius {

    public static void main(String[] args) {
        celsius(0);
        celsius(0, 20);
    }

    public static void celsius(double fahrenheitTemperature) {
        double celsiusTemperature = ((fahrenheitTemperature - 32) * 5) / 9;
        double celsius_rounded = Math.round(celsiusTemperature * 100) / 100.0;
        System.out.println("Fahrenheit: " + fahrenheitTemperature + "  Celsius: " + celsius_rounded);

    }

    public static void celsius(double start, double end) {
        for (double fahrenheitTemperature = start; fahrenheitTemperature <= end; fahrenheitTemperature++) {
            celsius(fahrenheitTemperature);

        }
    }
}

Таким образом, вы можете напечатать одно или несколько значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...