在类中设置值不起作用

时间:2013-03-22 05:15:57

标签: java class methods

我有一个名为货币的课程

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.我不明白为什么会发生这种情况。这些方法不正确吗?

5 个答案:

答案 0 :(得分:2)

问题出在setValue方法:

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

您要为参数指定属性的当前值,它应该是向后的:

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

请注意,即使这样做,您也会获得5000.0000000...之类的输出。要修复结果,您可以使用String#formatSystem.out.printf

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

System.out.printf("%.2f\n", testM.getValue());

答案 1 :(得分:0)

在您的代码中,您将value分配给参数x,它应该是相反的。

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

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

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

您正在使用默认值x指定您传递的参数value。你必须做到与此完全相反。使用传递的值valuex分配。

因此,this.value = 5000发生了x = 0,而不是{{1}}。

答案 4 :(得分: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
}