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]);
}
}
}
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]);
}
}
}
那么说明i可以迭代到最后,那么i+1, i+2等等的下标都会越界的,当然你可以这样改
for (int i = 0; i < a.length - 2; i++) {
a[i + 2] = a[i];
问题在这两行,“i+2”会大于a.length的最大值;所以会出现溢出
a[i+2] = a[6]
但是数组a最大也就a[4]
明显是错的