数组元素交换中的异常

时间:2013-07-28 07:12:50

标签: java

我有这个代码来交换数组元素对:

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)

为什么我会收到此异常?我该如何解决?

4 个答案:

答案 0 :(得分:4)

让我们画一张桌子:

 i | a[i]
---+------
 0 |  1 :)
 1 |  2 :)
 2 |  3 :)
 3 |  4 :)
 4 |  ? :_(

请注意,数组在Java中是从零开始的,这意味着,如果您有一个大小为N的数组(在您的情况下为4),则索引从0到{{1} (在你的情况下N - 10)。

因此,当您尝试访问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