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]);
}
}
}

解决方案 »

  1.   

    当你的代码里面出现这样的东西for (int i = 0; i < a.length; i++)
    那么说明i可以迭代到最后,那么i+1, i+2等等的下标都会越界的,当然你可以这样改
    for (int i = 0; i < a.length - 2; i++) { 
      

  2.   

    int b = a[i + 2];
    a[i + 2] = a[i];
    问题在这两行,“i+2”会大于a.length的最大值;所以会出现溢出
      

  3.   

    多考虑边界情况,比如循环到最后一次的时候,
    a[i+2] = a[6]
    但是数组a最大也就a[4]
    明显是错的