我是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
。
你能帮帮我吗?谢谢!
答案 0 :(得分:1)
您应该在while循环中移动add
,并更改i
和j
的起始和结束索引,如:
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),它会起作用。