метод преобразования toCelsius () не работает должным образом

#java #methods

#java #методы

Вопрос:

Я написал метод, который преобразует единицы измерения градусов в градусы Цельсия, но когда я запускаю его в основном методе, он выдает неверный ввод. В идеале 212 F дает 100 C; однако результат, который я получил, был -273.15. О боже. Есть идеи? * редактировать — я пропустил перерыв; в первый раз, поэтому я понял это. После вставки я получил число 0.0, ниже приведен мой самый последний код.

 public class Temperature {
    private double degree;
    private char degreeUnit;
    

    public Temperature(double degree, char degreeUnit) {
        this.degree= degree;
        this.degreeUnit= degreeUnit;
    }
    public Temperature toCelsius() {
        switch(this.degreeUnit) {
        case 'F':
            this.degree=(this.degree-32)* (5/9);
            this.degreeUnit= 'C';
            break;
        case 'K':
            this.degree=this.degree-273.15;
            this.degreeUnit= 'C';
            break;
        default:
            this.degreeUnit= 'C';
        }
        return this;
    }
}

public class TemperatureDemo
{
    
    public static void main(String[] args)
    {
        Temperature temp5 = new Temperature(212, 'F');
        System.out.println(temp5.toCelsius());
    }
}
  

Ответ №1:

Вам нужно вставить break инструкции после ваших обращений. В противном случае они просто переходят к следующему.

         case 'F':
            this.degree=(this.degree-32)* (5/9);
            this.degreeUnit= 'C';
            break;
        case 'K':
            this.degree=this.degree-273.15;
            this.degreeUnit= 'C';
            break;
        default:
            this.degreeUnit= 'C';
        
  

Пара других проблем.

Одна из проблем (5/9). Это целочисленная математика и приводит к 0. Попробуйте (5. / 9)

И переопределите toString в вашем классе температуры, чтобы печатать значения при указании объекта. Что-то вроде:

    @Override
    public String toString() {
        return degree   " "   degreeUnit;
    }


  

Комментарии:

1. Я ценю это; Я пропустил fudementals. После того, как я их добавил, я получил 0. Может быть, в моем коде есть другие ошибки?

2. Проблема в том, что (5/9). Это целочисленная математика и приводит к 0. Попробуйте (5. / 9) .

3. Не думал об этом. Попробую! Вы меня просветили. Спасибо!

Ответ №2:

в вашем операторе switch отсутствует команда «break;». Пожалуйста, добавьте «break;» в ваш оператор switch.Пример из W3school( https://www.w3schools.com/java/java_switch.asp )

переключатель (выражение) { случай x: // разрыв блока кода; случай y: // разрыв блока кода; по умолчанию: // блок кода }