我正在使用for循环和while循环轻松简单的程序,
并且发生ArrayIndexOutOfBoundsException
。
这是我的代码:
public class ForWhileLoops
{
public static void main(String[] args)
{
int[] mary = new int[30];
for(int a = 0; a < 31; a++)
{
mary[a]= a*3;
}
for(int b = 0; b < 31; b++)
{
System.out.println(mary);
}
int c = 0;
while(c < 31)
{
c++;
System.out.println(c);
}
}
}
以下是发生的错误:
java.lang.ArrayIndexOutOfBoundsException: 30
at ForWhileLoops.main(ForWhileLoops.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
答案 0 :(得分:7)
使用
for int(a = 0; a < mary.length; a++) {
...
}
mary.length产生30。
你的数组长30个元素。然而,第一个元素是0,使29成为最后一个元素。
答案 1 :(得分:5)
int[] mary = new int[30];
数组从0
开始编制索引。
因此,int[30]
数组将包含从0
到29
的有效索引
for(int a = 0; a < 31; a++)
在上一次迭代中,您正在访问超出数组范围的mary[30]
。
通过将其替换为
来解决此问题 for(int a = 0; a <mary.length; a++)
使用此解决方案,如果您更改阵列的大小,则不必更改for
循环
答案 2 :(得分:1)
ArrayList(索引0到29)中只有30个空间。索引31无法创建。