我需要以下输出 例如:
int array [] = {1, 2, 3, 4, 5};
应该使用for循环
输出应采用以下形式:
List Difference
1 0
2 1
3 1
4 1
5 1
这是我正在使用的代码,它工作正常,直到4但是然后在5它说outofbounds因为它看着数组中的位置5不会退出。所以,我需要帮助!!!
代码:
for (int counter = 0; counter < degreedays.length;++counter){
System.out.println("\t" + degreedays[counter] + "\t\t\t" + (degreedays[counter+1] - degreedays[counter]));
答案 0 :(得分:1)
问题是你的代码使用规范的for循环遍历数组的所有索引,这很好;但是,循环体不仅使用索引(counter
)而且使用索引加一(counter+1
),这超出了数组索引的范围!
更正您的代码,使其不会尝试访问超出范围的数组元素,例如:通过在尝试使用它之前检查“counter + 1”是否为有效索引。
答案 1 :(得分:1)
for循环的最后一次迭代引用了一个超过数组末尾的迭代,因此得到ArrayIndexOutOfBoundsException
。您需要将第一次迭代作为特殊情况处理,因为它始终为零。然后,对于循环的其余部分,减去当前索引减去最后一个索引。 E.g:
int[] degreedays = new int[] { 1, 2, 3, 4, 5 };
for (int counter = 0; counter < degreedays.length; ++counter) {
int diff = counter == 0 ? 0 : degreedays[counter] - degreedays[counter - 1];
System.out.println("\t" + degreedays[counter] + "\t\t\t" + diff);
}
答案 2 :(得分:0)
这些事情可以通过各种方式完成。我就是这样做的:
int array [] = {1, 2, 3, 4, 5};
int Previous = array[0]; // Keeps previous value of array and is used to print.
System.out.println("List Difference");
for (int I=0; I<array.length(); I++) {
int J=I+1;
Previous = Previous - array[I];
System.out.println(" "+J+" "+Previous);
Previous = array[I];
}
但请注意,您的导师可能不会欣赏我的代码风格,因为我认为他已经学会了Fortran-66作为我的第一语言。
答案 3 :(得分:0)
试试这个。
int[] degreedays = new int[] { -81, -2, -3, 10, Integer.MIN_VALUE,1,Integer.MAX_VALUE };// works for random numbers too.
if(degreedays != null && degreedays.length > 0) {
System.out.println("\t" + degreedays[0] + "\t\t\t0");
for (int counter = 1; counter < degreedays.length; ++counter) {
long s = degreedays[counter];
long f = degreedays[counter-1];
System.out.println("\t" + degreedays[counter] + "\t\t\t" + Math.abs(s-f) );
}
}