程序中数组索引越界异常,用于数组的反转 以下是反转数组的代码 导入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++;

}