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#formatまたはを使用でき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

パラメータ(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 に答える
0

あなたのコードでは、valueto parameterを割り当てていますが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 に答える