Java如何使用循环将这些元素添加到int数组然后返回数组

时间:2013-10-07 16:25:58

标签: java arrays

我似乎无法弄清楚我是怎么得不到正确的输出

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

我正在尝试比较第一个和第二个数组,以便找到第二个数组适合第一个数组的位置,而不会超过第一个数组的最大值...

第一次通过循环: 0比较1,2比较3比3比3(这不起作用) 第二次转移职位: 0,2,2与3,3与4(工程) 第三次: 0,3,3与4,然后3与5(再次工作)

然后对于数组中的每个位置,它运行一个数组返回这些值,所以在这个例子中将是前面[1],前面[2],前面[3]所以这样返回的数组看起来像{ 1,2,3 ......}

2 个答案:

答案 0 :(得分:4)

你没有使用x,所以外循环没有完成它的工作。使用前[x]和后[y]

答案 1 :(得分:0)

您的循环需要如下所示:

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

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

    }
}

你还需要从长度中取出-1,例如前面的长度是10.所以数组从0开始从0到9,这是10个不同的值,-1从0开始 - 8,失去了你的价值观。如果你做&lt; =而不是&lt;。

,你可以保持-1

在一张纸上书写并指向数组中的每个点,当你单步执行它时,如果这不能得到你的结果,那么就会看到发生了什么。