如何解决查找数组中连续数字之间的差异
| 我需要以下输出 例如:int array [] = {1,2,3,4,5};
应该使用for循环来完成
输出应采用以下形式:
List Difference
1 0
2 1
3 1
4 1
5 1
这是我正在使用的代码,它可以正常工作到4,但是到了5,它表示出站,因为它查看的是数组中的第5个不退出的位置。所以,我需要帮助!!!
码:
for (int counter = 0; counter < degreedays.length;++counter){
System.out.println(\"\\t\" + degreedays[counter] + \"\\t\\t\\t\" + (degreedays[counter+1] - degreedays[counter]));
解决方法
问题是您的代码使用规范的for循环遍历数组的所有索引,这很好。但是,循环的主体不仅使用索引(
counter
),而且还使用索引加一个(counter+1
),这超出了数组索引的范围!
请更正您的代码,使其不会尝试访问超出范围的数组元素,例如通过在尝试使用“ counter + 1 \”是否为有效索引之前进行检查。,for循环的最后一次迭代是在数组末尾引用一个,因此得到ArrayIndexOutOfBoundsException
。您需要将第一次迭代作为特殊情况处理,因为它始终为零。然后,对于循环的其余部分,减去当前索引减去最后一个索引。例如。:
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);
}
,这些事情可以通过多种方式完成。这是我的处理方式:
int array [] = {1,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作为我的第一语言。,尝试这个。
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) );
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。