2012-04-07 11 views
0
public class Main { 

    public static void main(String[] args){ 

     Class2 class2Object = new Class2(); 

     //class2Object 
     //num1 
     class2Object.setNumber(class2Object.number1, 1) ; 

     class2Object.getNumber(class2Object.number1); 
    } 

} 

public class Class2 { 
    public int number1; 

    public void setNumber(int x, int value){ 
     x = value; 

    } 
    public void getNumber(int number){ 
     System.out.println("Class2, x = "+number); 
    } 
} 

私は2つのクラスを持っています:Class2とMain。私はインスタンス変数をMainクラスの1に割り当てます。 class2Object.number1が1の値に割り当てられないのはなぜですか?Java変数とパラメータ

public void setNumber(int x, int value){ 
    x = value; // This just overwrites the value of x! 
} 

セッターは、パラメータを1つだけ持っている必要があります。出力は、あなたのセッターは何もしません0

答えて

3

です。あなたはこのように割り当てる必要がありますので

// The field should be private. 
private int number; 

public void setNumber(int value){ 
    this.number = value; 
} 
+0

私は数値1、数値2のような整数の多くを持っている場合...私はすべての変数のためのセッターが必要か? – user1050548

+1

その場合、Listの配列が必要です。 – sarwar026

+0

ほとんどの人は、変数ごとに別々のゲッターとセッターを持っています。メソッドによってどの変数が設定されているかがはっきりとわかります。 – user12345613

1

:Javaでは

private int number1; 

public void setNumber(int value){ 
    this.number1 = value; 
} 
+2

不要なパラメータを削除するのを忘れました。 – twain249

+0

オハイオ州申し訳ありません、はい@ twain249。あなたが正しいです。私は自分のコードを更新しています。 – sarwar026

2

、(int型のような)プリミティブ型を参照することにより、値ではない渡されたあなたはメンバーフィールドに受信した値を割り当てる必要があります。

従って言って:

Class2 class2Object = new Class2(); 
class2Object.setNumber(class2Object.number1, 1) ; 

が値ではなく、参照することによりclass2object.number1を渡します。したがって、setNumberのパラメータxは全く新しいintであり、number1と同じ場所を指していません。class2objectです。このメソッドは新しいint xの値を上書きし、number1が指す値を変更しません。

値を設定するためには、次のようになります。

void setNumber(int newNumber) { this.number1 = newNumber; } 
関連する問題