具有一个公共变量的getter和setter的问题

时间:2018-11-22 12:09:01

标签: java getter-setter

我有一个温度转换器程序的任务。我必须在一个类中使用一个veriable,这是两个setter和两个getter方法所使用的。

这是主要课程:

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());
}
}

我怎么对吸气剂说,当主函数设置了第一个setter时,吸气剂以...返回;第二次以那个...返回。

这是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 :(得分:2)

摄氏温度的获取器和设置器不需要转换。在吸气剂和吸气剂中进行华氏度计算:

    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;
    }

答案 1 :(得分:2)

我建议由设置员重置另一个值,因此每次您设置一个值时,另一个也是新计算的:

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;
 }
}

答案 2 :(得分:0)

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

这很破旧,您应该在分配前将fahr转换为cel。

此处:

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

您应该返回this.celcius