Java中的数组:Java.lang.ArrayIndexOutOfBoundsException

Java中的数组:Java.lang.ArrayIndexOutOfBoundsException,java,Java,在学习Java中的数组部分时,我遇到了这个问题,我搜索了错误消息 "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 at Main.main(Main.java:12)" 读一些关于它的文章 我知道索引从0开始,因此它将以n-1结束(n是分配的大小)。但是我仍然没有在代码中发现问题。如果你能帮我,这对我来说意义重大,因为

在学习Java中的数组部分时,我遇到了这个问题,我搜索了错误消息

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
        at Main.main(Main.java:12)"
读一些关于它的文章

我知道索引从0开始,因此它将以
n-1结束(n是分配的大小)
。但是我仍然没有在代码中发现问题。如果你能帮我,这对我来说意义重大,因为数组是一个令人困惑的部分

我需要返回输出:

1
3
5
7
9
2
4
6
8
10
这就是我写的

import java.io.*;
class Main {
    public static void main(String[] args) throws Exception {
    int [] oddArray = new int[5];
    int [] evenArray = new int[5];

    int k = 0;

    do {
        k++;

        oddArray[k] = k + 1;

        evenArray[k] = k + 2;


    }while(k <= 10);


    for(int j = 0 ; j < 5 ; j++) {
        System.out.println(oddArray);
    }

    for(int j = 0 ; j < 5 ; j++) {
        System.out.println(evenArray);
        }
    }
}
import java.io.*;
班长{
公共静态void main(字符串[]args)引发异常{
int[]oddArray=新的int[5];
int[]evenArray=新的int[5];
int k=0;
做{
k++;
oddArray[k]=k+1;
均匀阵列[k]=k+2;

}(k注意,在第一次用“k++;”行使用k之前,要先增加k。因此,当你给oddArray和evenArray赋值时,你的索引从1开始,然后变为5,这超出了范围

您的while循环中还有和错误。您正在检查10,而您应该检查5

while(k < 5);
while(k<5);

在赋值之后,将k++移动到,修复while循环检查,它应该可以工作。

您需要分离
k
和数组索引。否则,当
k=5
时,您将
6
添加到
oddArray[5]
,这是超出范围的

我会这样说

        final int ARR_SIZE = 5;
        int [] oddArray = new int[ARR_SIZE];
        int [] evenArray = new int[ARR_SIZE];

        int k = 0, index = 0;

        do {
            oddArray[index] = k + 1;
            evenArray[index] = k + 2;
            index++;
            k+=2;
        }while(index < ARR_SIZE);


        for(int j = 0 ; j < ARR_SIZE ; j++) {
            System.out.println( oddArray[j]);
        }

        for(int j = 0 ; j < ARR_SIZE ; j++) {
            System.out.println(evenArray[j]);
        }
final int ARR_SIZE=5;
int[]oddArray=新int[ARR_SIZE];
int[]evenArray=新的int[ARR_SIZE];
int k=0,索引=0;
做{
oddArray[index]=k+1;
均匀数组[索引]=k+2;
索引++;
k+=2;
}而(指数
您分配了五个“槽”。您从0-10迭代
k
。10大于5。两个数组的长度都是5,因此最高索引是4。您从索引1开始(错误,应该是0),然后让它增加到10?您希望它如何工作?您是否查看了错误发生的行?您认为
在(k)您的数组大小为5。您的“k”将增加到10。如果这只是一个数组,我建议迭代到array.length。这里我们有两个数组,所以我建议使用一个大小常量,用于创建两个数组,然后迭代到
索引
,其中ARR\u Size表示常量。对此无可争辩,将更新代码。