我正在为学位转换编写一个快速的小转换应用程序而且我被卡住了。我在使用不同类的方法更新值时遇到问题。 这是我的代码:
public class AppInfo {
private double value;
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
}
public void ConvertF() {
value = (value * 1.8) + 32;
}
public void ConvertC() {
value = ((value - 32) * (5 / 9));
}
public void show() {
System.out.println(value);
}
}
我的第二课(主要)是:
public class Working {
public static void main(String[] args) {
System.out.println("Enter degree");
Scanner sc = new Scanner(System.in);
double value = sc.nextDouble();
AppInfo newValue = new AppInfo();
String answer;
System.out.println("What unit conversion? C to convert to celsius and F for fahrenheit");
answer = sc.next();
newValue.setValue(value);
if(answer.toLowerCase() == "c") {
newValue.ConvertC();
}
else if(answer.toLowerCase() == "f") {
newValue.ConvertF();
}
newValue.show();
}
}
每次运行它时,它只返回用户在开头输入的相同值。使用ConvertF / C方法后,它不会更新新值。
我不知道为什么这被标记为重复。我的问题不是要比较字符串,所以它到底是怎么回事?我只是希望有人帮我理解我的代码有什么问题,这样我就可以有一个转换学位的功能程序。简单地关闭我的问题就是失去动力并且非常恼火。我想要的只是知道如何解决它/什么是错误。
答案 0 :(得分:1)
当你这样做时,你错误地比较了字符串:
answer.toLowerCase() == "c"
然后你要比较参考而不是内容
改为:
if(answer.equalsIgnoreCase("c")) {
newValue.ConvertC();
}
else if(answer.equalsIgnoreCase("f")) {
newValue.ConvertF();
}
AND 此方法不正确:
public void ConvertC() {
value = ((value - 32) * (5 / 9));
}
这会将值设置为0.0,因为您将5/9除以整数,以便结果为整数(零)
这样做:
public void ConvertC() {
value = ((value - 32) * (5.0 / 9));
}