2012-05-01 5 views
0

私はベクトルを使って作業しています。データをコピーして編集しようとすると、ベクトルとコピーの両方が変更されます。Java int []ベクトルはデータの代わりにポイントを与えています。

//The vectors contains int[] and the first 3 are loaded with int values. 
int ToCheck[] = OpenSet.elementAt(Current); 
ToCheck[1] = ToCheck[1] + 1; // This changes OpenSet and ToCheck[]. 
boolean IsInVector = false; 

for(int y = 0;y < OpenSet.size(); y++){ 
    if(ToCheck == OpenSet.elementAt(y)) // Because it changed both values it always is true 
    { 
    IsInVector == true; 
    } 
} 

ベクター内のデータをコピーして、元のデータを変更することなく編集できるようにします。あなたは、配列の完全なコピーを作成する必要があり

答えて

0

配列をコピーする簡単な方法はArrays.copyOfを使用することです。メソッド名とフィールド/パラメータ/ローカル名は、小文字で始まる必要があります。

+0

私はすべての名前を変更しました。 –

+0

それは動作するようですが、それはAttrays not Attaysでなければならないことです。 –

+0

ありがとうございました - それを修正しました。 –

0

int[] origArr = OpenSet.elementAt(Current); 
int[] newArr = Arrays.copyOf(origArr, origArr.length); 

別の(無関係)のポイントを - 変数名の先頭に下ケースである、Javaの命名規則に従ってください。

int[] tmp = openSet.elementAt(current); 
int toCheck[] = Arrays.copyOf(tmp, tmp.length); 

そして、あなたが聞いている一方で、PLEASEは受け入れJavaの命名規則を使用することを学ぶ:

+0

ありがとうございます。私はそれを念頭に置いておきます。 :) –

関連する問題