0

我有一门课叫做货币

public class Monetary
{
    double value;
    String type;

    public Monetary()
    {
        value = 0;
        type = "";
    }

    public double getValue()
    {
        return value;
    }

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

我正在测试 get 和 set 方法,所以我制作了一个测试类,如下所示

    public class test 
{
    public static void main(String [] args)
    {

        double test = 5000;

        Monetary testM = new Monetary();

        testM.setValue(5000);

        System.out.println(testM.getValue());


    }
}

问题是java打印的结果不是5000.0,而是0。我不明白为什么会这样。这些方法不正确吗?

4

5 回答 5

2

问题出在setValue方法上:

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

您正在为参数分配属性的当前值,它应该是向后的:

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

请注意,即使这样做,您也会得到类似的输出5000.0000000...。为了修复结果,您可以使用String#formator System.out.printf

System.out.println(String.format("%.2f", testM.getValue()));

或者

System.out.printf("%.2f\n", testM.getValue());
于 2013-03-22T05:17:27.247 回答
0

在您的代码中,您正在分配valueto 参数x,它应该是相反的。

public void setValue(double x){
    this.value = x;
}
于 2013-03-22T05:17:26.223 回答
0

尝试这个:

public void setValue(double x)
{
    this.value = x;
}
于 2013-03-22T05:17:42.210 回答
0
public void setValue(double x){
        this.value = x;
}

您正在为传递的参数分配x默认值value。你必须做完全相反的事情。value用传递的值分配x

因此,this.value = 5000这不是发生,而是发生x = 0

于 2013-03-22T05:17:42.997 回答
0

您正在为参数 (double x) 分配 int 值的值,因为您是返回值,所以它什么都不做,所以您想要做的是

public class Monetary
{
double value;
String type;

public Monetary()
{
    value = 0;
    type = "";
}

public double getValue()
{
    return value;
}

public void setValue(double x)
{
    value = x;//change this
}
于 2013-03-22T05:19:43.850 回答