#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: // разрыв блока кода; по умолчанию: // блок кода }