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)