当前位置: 首页 > 知识库问答 >
问题:

如何解决此代码中的ArrayIndexOutOfBoundsException?

芮叶秋
2023-03-14

我正在用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)

共有3个答案

吴康平
2023-03-14

ArrayList中只有30个空间(索引0到29)。索引31无法创建。

琴宾鸿
2023-03-14
int[] mary = new int[30];

数组从0开始索引

因此,int[30]数组将具有从029

for(int a=0;a

在上一次迭代中,您正在访问超出数组边界的mary[30]

将其替换为

for(int a=0;a

使用此解决方案,如果您更改数组的大小,则不必更改循环的

皇甫雨石
2023-03-14

使用

for int(a = 0; a < mary.length; a++) { 
    ... 
}

玛丽。长度为30。

你的数组有30个元素长。但是,第一个元素是0,使29成为最后一个元素。

 类似资料:
  • 实现一个以整数为参数的静态方法,使用Math类计算给定整数的整数平方根。如果整数为负数,则取其正数的平方根,然后返回结果的负数,表示它是一个虚数 我一直在尝试,一直到这里

  • 任何人都可以帮助我解决这个问题AndroidManifest.xml mainactivity.kt

  • 错误-mssql08(系统找不到指定的文件)java.io.FileNotFoundException:mssql08(系统找不到指定的文件)在java.io.FileInputStream.Open0(本机方法)

  • 问题内容: 我在下一行出现错误。我正在做添加到jsonarray的过程。请帮我。 问题答案: 这是我在重新编程时经常遇到的错误。此异常的原因或细节非常清楚。不允许在迭代时修改集合(正在添加新元素)。至少不支持语法。 为了解决您的问题,我认为有两种方法很简单。 1)。而不是使用语句来循环,更好的方法是使用迭代器来避免ConcurrentModificationException。 2)。在循环播放时

  • 问题内容: 我是 JSON 文档的初学者,这是我的代码,因此请帮助我解决此错误。 问题答案: 错误消息告诉您在字符串文字中包含控制字符,例如,字符代码8或10或13或任何小于32(空格)的字符。 该JSON定义告诉我们,你不能在字符串字面控制字符,则必须使用转义序列,如,,,或在那里是一个Unicode“码点”十六进制代码(字符)。 因此,例如,假设以下内容位于文件(或其他数据流)中: 那是无效的