[英]Not getting correct output for temperature conversions
好的,这样我的程序可以编译并很好地运行,但是目的是在摄氏,fahernheit和开尔文之间转换,并且当程序与客户端一起运行时,它显示正确的单位(F,C,K),但给出的值为在所有温度下均为50。 我该如何解决?
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;
}
}
你应该改变
public double convertToKelvin() {
this.scale = "K";
return this.value = getKelvin();
}
至
public double convertToKelvin() {
this.value = getKelvin()
this.scale = "K";
return value;
}
其他秤也一样。 首先要设置scale
,因此对象会看到scale
是相同的,并且不进行转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.