程序中数组索引越界异常,用于数组的反转 以下是反转数组的代码 导入java.util.*; 中产阶级{ 公共静态void main(字符串参数[]){ int a[]=新int[]{2,3,65,4,7,8,9}; int c[]=新int[a.length-1]; int k=0; 对于(int i=a.length;i>0;i++){ c[k]=a[i]; k++; } System.out.println(“数组的反转”); 对于(int i=0;i
程序中数组索引越界异常,用于数组的反转 以下是反转数组的代码 导入java.util.*; 中产阶级{ 公共静态void main(字符串参数[]){ int a[]=新int[]{2,3,65,4,7,8,9}; int c[]=新int[a.length-1]; int k=0; 对于(int i=a.length;i>0;i++){ c[k]=a[i]; k++; } System.out.println(“数组的反转”); 对于(int i=0;i,java,arrays,Java,Arrays,a.length超出a 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.leng
a.length
超出a
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]+" ");
}
}
那么
您需要相同长度的数组,而不是
length-1
的反向数组要向后循环数组,您需要更改循环中的所有三个条件,如下所示:
int c[]=new int[a.length-1];
让我们把它拆开:
for(int i=a.length-1;i>=0;i--)
{
c[k]=a[i];
k++;
}
必须从a.length-1
开始,因为数组使用基于0的索引,并且a.length
超出范围
int i=a.length-1;
您需要迭代直到i>=0
,因为i>0
将丢失数组中的一个元素
i>=0;
您需要减小i
,因为循环将始终访问越界索引/否则永远不会终止
另外,正如@Jigar所提到的,您需要将
c
初始化为int c[]=new int[a.length];
您在这里犯了错误,您需要提到数组的长度a.length
而不是a.length-1
,for循环条件中的值应该像for(int i=a.length-1;i>=0;i--)
i
应递减。修改的代码如下:
i--
array[array.length]
总是超出范围。数组索引从0到长度-1。另请参见。请格式化代码。另外,请使用Java命名约定-类应在PascalCase
;Middle
而不是Middle
。如果您指出错误并解释错误原因,这个答案将更有用修改可以解决问题。:@Raju您的评论不支持-1
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++;
}