2016-11-14 13 views
-4

プログラムを実行しているときに、メインドライバクラスを介してクラス内のコンストラクタで定義されたローカル変数の値を変更したいと考えています。どのように私はこれを達成することができますか?メインクラスまたはメインメソッド内のインスタンス変数を変更します

ここに私が使用しているコンストラクタのサンプルがあります。

public Scale() 
{ 
    weight = 0; 
    unit = "kg"; 
} 

ドライバでプログラムを実行しているときに、あるポイントで重みの値を変更したいと考えています。

+0

ものは、ローカル変数ではありませんsetWeight()ほど簡単なもの、またはスケールにアイテムを追加するための方法のような、より複雑なものである可能性があります。何を試しましたか?あなたのオブジェクトのインスタンスを構築する方法を知っていますか?あなたはゲッターとセッターを持っていますか? –

+1

@ cricket_007:getterメソッドとsetterメソッドでjavaテキストを読む必要があるようです。コミュニティのwikiとして回答しましたが、私は彼が基本的なJavaテキストを勉強することによってこれが最もうまく答えられるので、閉じることにも投票しています。 –

答えて

1

外部コードがクラスのフィールドの状態を変更または "変更"できるようにする方法をクラスに与えたいと思うようです。このような「ミューテータ」メソッドは、Javaで「セッタ」メソッドなどの一般的に使用されます。ここでは、public void setWeight(int weight)

public void setWeight(int weight) { 
    this.weight = weight; 
} 
+0

私はそれを把握していないとは思わない。私はすでにこれに似たセッター/ミューテーターをすでに持っていましたが、私の頭の中ではクリックしませんでした。クラスはまだ私にはかなり新しいです。ありがとう! – JKawa

-1

それはおそらくメソッドを介しだろう許可するための最良の方法。それは...

public class Scale { 

    private float weight = 0; 
    private String unit = "kg"; 

    public void setWeight(float weight) { 
     this.weight = weight; 
    } 

    public void addItem(Item i) { // Assumes that Item is an interface defined somewhere else... 
     this.weight += i.getWeight(); 
    } 

    public static void main(String[] args) { 
     Scale s = new Scale(); 
     s.setWeight(4.0F); // sets the weight to 4kg 
     s.addItem(new Item() { 
      @Override 
      public float getWeight() { 
       return 2.0F; 
      } 
     }); // Adds 2kg to the previous 4kg -- total of 6kg 
    } 

} 
関連する問題