2

setWav が in を変更しないのwavwav + " " + "Grapes"なぜですか? add を出力したい場合、set メソッドを作成する必要がありますOranges? Grapesか?

編集:助けてくれてありがとう、どうもありがとう。

package javaapplication1;

public class JavaApplication1 {

    public static void main(String[] args) 
    {
        NewClass object1 = new NewClass();
        System.out.println(object1.getAdd());
        object1.setWav("Oranges?");
        System.out.println(object1.getAdd());    


    }
}


出力:

ハンバーガーぶどう

ハンバーガーぶどう


package javaapplication1;

public class NewClass 
{
    private String wav;
    private String add;

    public NewClass()
    {
        wav = "Burgers";
        add = wav + " " + "Grapes";       

    }

    public void setWav(String wav)
    {
        this.wav = wav;        
    }
    public String getWav()
    {
        return wav;
    }

    public String getAdd()
    {
        return add;
    }    

}
4

3 に答える 3

2

addを呼び出しても更新しませんsetWav。次の行を ctor から setter にコピーします。

add = wav + " " + "Grapes";  

そして、それはうまくいきます。

于 2012-09-18T22:36:13.417 に答える
2

あなたのgetAddメソッドは を返しますadd。コンストラクターで値を設定しますがadd、他の場所では設定しないため、変更しても変更されません (これら 2 つの変数はまったく関係がなく、一方を変更しても他方には影響しません)。これを試すことができます:NewClasswav

public void setWav(String wav) {
    this.wav = wav;  
    add = wav + " " + "Grapes";  // i.e. add = wav + " Grapes";
}
于 2012-09-18T22:36:15.350 に答える
2

あなたの例では、コンストラクターは「追加」の更新を担当しています。しかし、問題は、クラスがインスタンス化されるときに一度だけ呼び出されることです。

次の行で発生します: NewClass object1 = new NewClass();

setWav を次のように変更できます。

public void setWav(String wav)
{
    this.wav = wav;
    this.add = wav + " " + "Grapes";
}

この方法では、setWav が呼び出されるたびに add が更新されます。

于 2012-09-18T22:38:55.843 に答える