2017-01-16 2 views
0

次のJavaプロジェクト用1,2,3次元ベクトルを自分で保存するためのVector(Vektorという名前の)クラスを作りたかったのです。 Class Vektorには、作成時に入力するパラメータの数ごとに3つのコンストラクタがあります。 Vektorを配列として出力するshow()メソッドもあります。 開始コード:Vektorsを開始すると、次の問題が表示されますJavaオブジェクトが上書きされていて新規作成されていません

public static void main(String[] args) { 
Vektor x = new Vektor(1); 
Vektor xy = new Vektor(2,3); 
Vektor xyz = new Vektor(4,5,6); 
x.show(); 
xy.show(); 
xyz.show(); 

が出力:

[4,5,6] 
[4,5,6] 
[4,5,6] 

クラスVEKTORは次のようになります。もちろん

public static int[] alpha = new int[3]; 
public Vektor(int x) { 
this.x = x; 
alpha[0] = x; 
} 
public int[] show() { 
System.out.println(Arrays.toString(alpha)); 
return alpha; 

コンストラクタの変更をパラメーターの数を指定します。 VectorにすべてのVariableを格納するArrayアルファに加えて、変数x、y、zがあり、これらはコンストラクタに現れるときにその値で埋められます。 私は3つの異なるオブジェクトを作成したので、誰かが私が3倍の同じOutputを得て、3つの異なるOutputsを得ないのは、 Thx、Luca

更新:問題が見つかりました。アレイは「静的」として分類されてはなりません。 ありがとうございました。

+5

「アルファ」の宣言を示してください。私の推測では、それは静的なものです(ヒント:あなたのコードの一部だけでなく、[mcve]を常に表示してください) –

+0

静的変数はすべてのオブジェクトで同じです。 「静的」を削除すると効果があります –

答えて

0

Vektorクラスをインスタンス化するたびに、最新のインスタンス化の最近のコンストラクタ引数の一部(すべてではないにしても)を保持するようにalpha配列が更新されるようです。

alpha配列をカプセル化するには、アルファ配列を静的からパブリック(理想的にはゲッター/セッターでプライベート)に変更する必要があります。

関連する問題