Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组元素交换中出现异常_Java - Fatal编程技术网

Java 数组元素交换中出现异常

Java 数组元素交换中出现异常,java,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; } 为什么我会得到这个例外?如何修复它?您将达到a.length-1 for(int i=0; i<a.length ;i++) for(inti=0;i您将达到a.length-1 for(int

我有以下代码来交换数组元素对:

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

为什么我会得到这个例外?如何修复它?

您将达到
a.length-1

    for(int i=0; i<a.length ;i++)

for(inti=0;i您将达到
a.length-1

    for(int i=0; i<a.length ;i++)

用于(int i=0;i您是从
i=0
开始的。因此它应该是
a.length-1
您是从
i=0
开始的。因此它应该是
a.length-1

错误是由于您访问
a.length
处的元素,而该元素不可用,因此代码抛出
arrayindexofboundsex异常
因此请在for循环中使用
a.length-1
。您的案例中的问题是在最后一次迭代中。您试图使用[4],但数组a[]中的元素从[0]开始,在[3]结束.

此错误是由于您访问的元素
a.length
不可用,因此代码抛出
ArrayIndexOutboundsException
,因此请在for循环中使用
a.length-1
。您案例中的问题是在上一次迭代中。您试图使用[4],但数组a[]从[0]开始,在[3]结束。让我们画一张表:

 i | a[i]
---+------
 0 |  1 :)
 1 |  2 :)
 2 |  3 :)
 3 |  4 :)
 4 |  ? :_(
请注意,数组在Java中是基于零的,这意味着,如果您有一个大小为
N
(在您的示例中为4)的数组,那么索引从
0
N-1
(在您的示例中为
0
3

因此,当您尝试访问
a[a.length-1+1]
a[i+1]
在上一次迭代中)时,您将得到一个表。

让我们绘制一个表:

 i | a[i]
---+------
 0 |  1 :)
 1 |  2 :)
 2 |  3 :)
 3 |  4 :)
 4 |  ? :_(
请注意,数组在Java中是基于零的,这意味着,如果您有一个大小为
N
(在您的示例中为4)的数组,那么索引从
0
N-1
(在您的示例中为
0
3


因此,当您尝试访问
a[a.length-1+1]
a[i+1]
在上一次迭代中)时,您得到了。

for(int i=0;iArrayIndexOutOfBoundsException
1)当条件
i
访问[i]2]时,当条件
ii
抛出两个
ArrayIndexOutOfBoundsException
1)