麻烦我的第一个程序

时间:2016-04-06 18:29:51

标签: java

我正在为学位转换编写一个快速的小转换应用程序而且我被卡住了。我在使用不同类的方法更新值时遇到问题。 这是我的代码:

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方法后,它不会更新新值。

我不知道为什么这被标记为重复。我的问题不是要比较字符串,所以它到底是怎么回事?我只是希望有人帮我理解我的代码有什么问题,这样我就可以有一个转换学位的功能程序。简单地关闭我的问题就是失去动力并且非常恼火。我想要的只是知道如何解决它/什么是错误。

1 个答案:

答案 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));
    }