简体   繁体   中英

Not getting correct output for temperature conversions

Ok so my program compiles and runs perfectly well, but the purpose is to convert between celsius, fahernheit, and Kelvin, and when the program runs with the client, it shows the correct units (F,C,K) but gives a value of 50 for all temperatures. How do I fix this?

public class Temperature
{
private double value;
private String scale;

public Temperature()  // default constructor
{
  this.value = 0;
  this.scale = "C";
}

public Temperature(double value, String scale)
{
 this.value = value;
 this.scale = scale;     
}

public double getValue()
{
 return this.value;
}

 public String getScale()
 {
 return this.scale;
 }

 public double getCelsius()
 {

 if (scale.equalsIgnoreCase ("C"))
 {
     return this.value;
 }
 else if (scale.equalsIgnoreCase("F"))
 {
     double faren = ((this.value - 32) * (5/9));
     return faren;
 }
 else
 {
     double kelvin = (this.value - 273.15);
     return kelvin;
 }
 } // end getCelcius

 public double getFaren()
 {
 if (scale.equalsIgnoreCase ("F"))
 {
     return this.value;
 }
 else if (scale.equalsIgnoreCase("C"))
 {
     double celsius = ((this.value * 1.8) + 32);
     return celsius;
 }
 else
 {
     double kelvin = ((this.value * 1.8) - 459.67);
     return kelvin;
 }
 } // ene getFaren

 public double getKelvin()
 {
 if (scale.equalsIgnoreCase("K"))
 {
     return this.value;
 }
 else if (scale.equalsIgnoreCase("C"))
 {
     double celsius = (this.value + 273.15);
     return celsius;
 }
 else
 {
     double faren = ((this.value + 459.67) * (5/9));
     return faren;
 }
 } // end getKelvin

 public void setTemperature(Temperature t)
 {
 this.value = t.value;
 }

 public void setType(double degree, String measure)
 {
 this.value = degree;
 this.scale = measure;
 }

 public void setValue(double degree)
 {
 this.value = degree;
 }

 public void setScale(String measure)
 {
 this.scale = measure;
 }

 public double convertToCelsius()
 {
 this.scale = "C";
 return this.value = getCelsius();
 }

 public double convertToFaren()
 {
 this.scale = "F";
 return this.value = getFaren();
 }

 public double convertToKelvin()
 {
 this.scale = "K";
 return this.value = getKelvin();
 }

 public Temperature clone()
 {
 return new Temperature(this.value, this.scale);
 }

 public boolean equals()
 {
 return this.value == this.value && this.scale == this.scale; 
 }

 public String toString()
 {
 String temps = ("The temperature is " + this.value + "(" + this.scale + ")");
 return temps;
 }

 }

You should change

public double convertToKelvin() {
    this.scale = "K";
    return this.value = getKelvin();
}

to

public double convertToKelvin() {
    this.value = getKelvin()
    this.scale = "K";
    return value;
}

The same for other scales. You are setting the scale first, so the object see that the scale is the same and don't do the conversion.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM