覆盖数组

时间:2017-11-12 10:51:20

标签: java arrays

我是Java的新手,我正在尝试覆盖如下数组:{2,7,6,1,9}{9,13,7,10,9}。所以我试图在数组中添加相邻数字并用总和覆盖第一个数字。我的代码如下所示:

int add = numbers[i] + numbers[i+1];
int[] numbersAdd = new int[numbers.length];
i = 1;
int j = 1;
while(j < numbers.length) {
    numbersAdd[j] = add;
    i++;
    j++;
}

我总是IndexOutofBoundException。 你能帮帮我吗?谢谢!

3 个答案:

答案 0 :(得分:1)

您应该在while循环中移动add,并更改ij的起始和结束索引,如:

int[] numbersAdd = new int[numbers.length];
int i = 0;
int j = 0;
while(j < numbers.length - 1) {
    int add = numbers[i] + numbers[i+1];
    numbersAdd[j] = add;
    i++;
    j++;
}
numbersAdd[numbers.length - 1] = numbers[numbers.length - 1];

或者可以使用for循环完成:

int[] numbersAdd = new int[numbers.length];
for(int i = 0; i < numbers.length - 1; i++) {
    numbersAdd[i] = numbers[i] + numbers[i + 1];
}
numbersAdd[numbers.length - 1] = numbers[numbers.length - 1];

答案 1 :(得分:1)

我想你想要这个+ - :

public static void diff(int[] numbers) {
        int[] numbersAdd = new int[numbers.length];
        int i=0;
        int j = 0;
        for(int k=0;k<numbers.length;k++)
            numbersAdd[k]=numbers[k];

        while(j < numbers.length-1) {
            numbersAdd[j] = numbers[j] + numbers[j+1];
            i++;
            j++;
        }
        for(int k=0;k<numbers.length;k++){
            System.out.print(numbersAdd[k]+" ");
        }
    }

答案 2 :(得分:0)

尝试this(与你的问题相同,答案更简单)。

你的代码中的问题是在最后一次迭代中我等于(length - 1)所以(i + 1)等于length,这是无效索引。将代码更改为迭代直到(长度为2),它会起作用。