0

コードが一意の要素を別の配列にコピーしない理由がわかりません。これが私のコードです。は要素をコピーするためのものだと思っ==ていましたが、エラーが発生したため、=代わりに を使用しました。

 public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] B = new int[15];
    B[2] = 2;
    B[3] = 3;
    B[4] = 4;
    B[5] = 5;
    B[6] = 6;
    B[7] = 7;
    B[8] = 8;
    B[9] = 9;
    B[10] = 10;

    int[] check = new int[B.length];
    for (int i = 0; i < B.length; i++) {
        for (int x = 0; x < check.length; x++) {
            if (B[i] != check[x]) {
                check[x] = B[i];
            }
        }
    }

    for (int i = 0; i < check.length; i++) {
        System.out.println(check[i]);
    }
}
4

3 に答える 3

2

すべてを 2 回ループしています。

現在、次のようになっています。

for (int i = 0; i < B.length; i++) {
    for (int x = 0; x < B.length; x++) {
        if (B[i] != check[x]) {
            check[x] = B[i];
        }
    }
}

これは、次のことを意味しますwhen i = 0 , then x=0, 1, 2, 3, 4, etc.. .when i = 1, x=0,1,2,3.... , etc.

したがって、最後の実行は になりi=14ますB[i] = 0
したがって、 ごとcheck[x]に、 と等しくなりません0

あなたがしたいことは、それを一列に並べることです。したがって、2 つの変数の代わりにi、次のように外側のループをx使用できます。iこれは、 のみを比較していることなどを意味しますB[1] to check[1] and B[2] to check[2]

このような:

for (int i = 0; i < B.length; i++) {
    if (B[i] != check[i]) {
        check[i] = B[i];
    }
}
于 2013-04-06T14:08:26.917 に答える
1

==は平等のテスト=用、割り当て用、

ちなみに、System.arraycopy(xxx)配列をコピーするために使用します。

public int[] findUnique(int[] data) {
    int[] unique = new int[data.length];
    int x = 0;
    for (int i = 0; i < data.length; i++) {
        boolean uni = true;
        for (int j = i + 1; j < data.length; j++) {
            if (data[i] == data[j]) {
                uni = false;
                break;
            }
        }
        if (uni) {
            unique[x++] = data[i];
        }
    }
    return unique;
}
于 2013-04-06T14:00:01.380 に答える
0

System.arrayCopy()ははるかに高速です

于 2013-04-06T14:01:04.947 に答える