-2

正しい出力が得られない方法を理解できないようです

int [] f = {1,2,3,4,5,5,4,3,2,1};
int [] b = {0,3,3};
System.out.println(Arrays.toString(hide(f,b)));

    // declare int array that will be returned by following method
int [] hiddenAt = {};

public static int [] hide(int [] front, int [] back) {
    if (back.length > front.length) {
        System.exit(0);
    }

    for(int x = 0; x < (front.length - 1); x++){
        for(int y = 0; y < (back.length - 1); y++){
            int temp = front[y];

            if (front[y] - back[y] <= front[y] && front[y] - back[y]  >= 0 ) {
                hiddenAt.add(temp);
            }

        }
    }
    return hiddenAt;
}

最初の配列の最大値を超えることなく、2 番目の配列が最初の配列に収まる場所を見つけるために、最初の配列と 2 番目の配列を比較しようとしています。

1 回目のループ: 0 は 1 と比較し、2 は 3 と比較し、次に 3 と 3 を比較します (これは機能しません) 2 回目は位置をシフトします: 0 と 2、2 と 3、3 と 4 (機能) 3 で 0、4 で 3、5 で 3 (再び動作)

次に、配列内のすべての位置に対して、それらの値を含む配列が返されます。この例では、front[1]、front[2]、front[3] であり、返された配列は {1, 2 のようになります。 、3 ... }

4

2 に答える 2

4

x を使用していないため、外側のループは機能していません。front[x] と back[y] を使用する

于 2013-10-07T16:30:52.807 に答える