Here is the code to reverse an array
import java.util.*;
class middle {
public static void main(String args[]){
int a[]=new int[]{2,3,65,4,7,8,9};
int c[]=new int[a.length-1];
int k=0;
for(int i=a.length;i>0;i++){
c[k]=a[i];
k++;
}
System.out.println("Reverse of an array");
for(int i=0;i<c.length;i++)
System.out.print(c[i]+" ");
}
}
运行时给出Array索引超出绑定的异常:7 代码出错的地方?
答案 0 :(得分:1)
a.length
超出了a
for(int i=a.length;i>0;i++)
{
c[k]=a[i];
k++;
}
然后,
int c[]=new int[a.length-1];
你需要相同长度的数组,而不是反向数组的length - 1
答案 1 :(得分:1)
要向后遍历数组,您需要在循环中更改所有三个条件,如下所示:
for(int i=a.length-1;i>=0;i--)
{
c[k]=a[i];
k++;
}
让我们分开:
int i=a.length-1;
您必须从a.length-1
开始,因为数组使用基于0的索引并且a.length
超出范围。
i>=0;
您需要迭代到i>=0
,因为i>0
会遗漏您阵列中的一个元素。
i--
您需要递减i
,因为循环将始终访问越界索引/永远不会终止。
P.S。正如@Jigar所提到的,您需要将c
初始化为int c[]=new int[a.length];
。
答案 2 :(得分:0)
你在这里犯了错误,你需要提到c的数组a.length
而不是a.length-1
的长度,并且for循环条件中的值应该类似于for(int i=a.length-1;i>=0;i--)
i
减少。 :修改后的代码在这里:
int a[]=new int[]{2,3,65,4,7,8,9};
int c[]=new int[a.length];
int k=0;
for(int i=a.length-1;i>=0;i--)
{
c[k]=a[i];
k++;
}