Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在类中设置值无效_Java_Class_Methods - Fatal编程技术网

Java 在类中设置值无效

Java 在类中设置值无效,java,class,methods,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) {

我有一门课叫货币

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。我不明白为什么会这样。这些方法是否正确?

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

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

问题出在
setValue
方法中:

public void setValue(double x) {
    x = this.value;
}
如果要为参数指定属性的当前值,则该值应为向后:

public void setValue(double x) {
    this.value = x;
}
请注意,即使这样做,您也会得到类似于
5000.0000000…
的输出。为了修复结果,您可以使用或:

试试这个:

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

您正在为传递的参数
x
指定
值的默认值。你一定做了完全相反的事。用传递的
x
值分配


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

您正在为参数(双x)分配int-value的值,该值不起任何作用,因为您是返回值,所以您要做的是

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
}

哇,一个愚蠢的错误,现在很尴尬。非常感谢。
public void setValue(double x)
{
    this.value = x;
}
public void setValue(double x){
        this.value = x;
}
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
}