Проблема с геттером и сеттером с одной общей переменной - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть задача с программой преобразователя температуры.Я должен использовать один проверяемый в классе, который используется двумя методами установки и двумя методами получения.

Это основной класс:

public class Main {

public static void main(String[] args) {
    Homero ho = new Homero();
    ho.setCelsius(0);
    System.out.println(ho.getFahrenheit());
    System.out.println(ho.getCelsius());
    ho.setFahrenheit(212);
    System.out.println(ho.getFahrenheit());
    System.out.println(ho.getCelsius());
}
}

Как я могу сказать получателям, что когдаосновная функция устанавливает первый установщик, получатель возвращает с этим ... и во второй раз возвращает с этим ...

Это класс Homero:

public class Homero {
double celsius;

public void setCelsius(double celsius){
    this.celsius = celsius;
}

public void setFahrenheit(double fahr){
    this.celsius = fahr;
}

public double getFahrenheit(){
        return (this.celsius*9)/5+32;
}


public double getCelsius(){
        return (this.celsius-32)*5/9;
}
}

И этобудет правильный вывод:

  • 32,0
  • 0,0
  • 212,0
  • 100,0

и неправильный выводчто у меня есть.

  • 32.0
  • -17.77777777777778
  • 413.6
  • 100.0

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Метод получения и установки по Цельсию не нуждается в преобразовании.Сделайте ваши расчеты в геттер и сеттер для Фаренгейта:

    public void setCelsius(double celsius){
        this.celsius = celsius;
    }

    public void setFahrenheit(double fahr){
        this.celsius = (fahr -32)*5/9;
    }

    public double getFahrenheit(){
        return this.celsius*9/5+32;
    }


    public double getCelsius(){
        return this.celsius;
    }
0 голосов
/ 22 ноября 2018

Я бы предложил сбросить другое значение с помощью установщиков, поэтому каждый раз, когда вы устанавливаете значение, другое также вычисляется по-новому:

public static class Homero {
 double celsius;
 double fahrenheit;
 public void setCelsius(double celsius) {
  this.celsius = celsius;
  this.fahrenheit = this.celsius * 1.8 + 32;
 }

 public void setFahrenheit(double fahr) {
  this.fahrenheit = fahr;
  this.celsius = (this.fahrenheit - 32) * 5 / 9;
 }

 public double getFahrenheit() {
  return this.fahrenheit;
 }


 public double getCelsius() {
  return this.celsius;
 }
}
0 голосов
/ 22 ноября 2018
public void setFahrenheit(double fahr){
    this.celsius = fahr;
}

это то, что вы должны конвертировать фар в кель до назначения.

здесь:

public double getCelsius(){
        return (this.celsius-32)*5/9;
}

вы должны вернуть this.celcius

...