0

ベクトルを使用していますが、データをコピーして編集しようとすると、ベクトルとコピーの両方が変更されます。

//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;
     }
}

ベクトル内のデータをコピーして、元のデータを変更せずに編集できるようにしたい。

4

2 に答える 2

0

アレイの完全なコピーを作成する必要があります。

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

もう1つの(無関係な)ポイント-変数名の先頭が小文字であるJavaの命名規則に従ってください。

于 2012-05-01T04:40:04.583 に答える
0

配列をコピーする簡単な方法は、次を使用することArrays.copyOfです。

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

そして、聞いている間、受け入れられているJavaの命名規則の使い方を学んでください。メソッド名とフィールド/パラメータ/ローカル名は小文字で始める必要があります。

于 2012-05-01T04:41:31.230 に答える