日期:2014-05-20  浏览次数:20632 次

请教各位大神,帮忙指点一下,看哪里出问题了,我刚接触JAVA,还不熟练。
public class Test {

public static void main(String[] args) {
int[] a = new int[]{ 8, 6, 5, 4, 1 };
for (int i = 0; i < a.length; i++) {
int b = a[i + 2];
a[i + 2] = a[i];
a[i] = b;

}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
}
}
------最佳解决方案--------------------
这个明显超出数组的长度了吧
------其他解决方案--------------------
当你的代码里面出现这样的东西for (int i = 0; i < a.length; i++)
那么说明i可以迭代到最后,那么i+1, i+2等等的下标都会越界的,当然你可以这样改
for (int i = 0; i < a.length - 2; i++) { 
------其他解决方案--------------------
int b = a[i + 2];
a[i + 2] = a[i];
问题在这两行,“i+2”会大于a.length的最大值;所以会出现溢出。。。
------其他解决方案--------------------
多考虑边界情况,比如循环到最后一次的时候,
a[i+2] = a[6]
但是数组a最大也就a[4]
明显是错的
------其他解决方案--------------------
LZ这样循环,数据下表越界了!