我有这个代码来交换数组元素对:
int[] a= new int[]{1,2,3,4};
for(int i=0; i<a.length ;i++)
{
int temp= a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
但是,我收到以下异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at com.B.main(B.java:14)
为什么我会收到此异常?我该如何解决?
答案 0 :(得分:4)
让我们画一张桌子:
i | a[i]
---+------
0 | 1 :)
1 | 2 :)
2 | 3 :)
3 | 4 :)
4 | ? :_(
请注意,数组在Java中是从零开始的,这意味着,如果您有一个大小为N
的数组(在您的情况下为4),则索引从0
到{{1} (在你的情况下N - 1
到0
)。
因此,当您尝试访问3
(上次迭代中的a[a.length - 1 + 1]
)时,您将获得ArrayIndexOutOfBoundsException。
答案 1 :(得分:1)
该错误是由于您访问a.length
处不可用的元素的原因,因此代码抛出ArrayIndexOutOfBoundsException
因此请在for循环中使用a.length - 1
。您的案例中的问题是最后一次迭代。你试图使用[4],但是数组a []中的元素从[0]开始并以[3]结束。
答案 2 :(得分:0)
你要到a.length - 1
for(int i=0; i<a.length ;i++)
并且您正在尝试访问a.length
中超出范围
答案 3 :(得分:0)
您从i=0
开始。所以它应该是a.length-1