在研究Java中的Array时,我遇到了这个问题,并搜索了错误消息
"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 is the allocated size)
结尾。但是我仍然没有在我的代码中发现问题。如果您能帮助我,这对我来说将有很多意义,因为数组是令人困惑的一部分。
我需要返回输出:
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);
}
}
}
答案 0 :(得分:1)
请注意,在第一次将其与“ k ++;”一起使用之前,要先增加k。线。因此,当您为oddArray和evenArray分配值时,索引从1开始到5超出范围。
while循环中也有and错误。您正在检查10,应该检查5。
while(k < 5);
将k ++移动到分配之后,修复while循环检查,它应该可以工作。
答案 1 :(得分:0)
您需要分隔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]);
}