Java:数组索引越界

标签 java arrays exception arraylist

我得到这个异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
at Vindu.<init>(setevelger.java:64)
at setevelger.main(setevelger.java:22)

当我运行此代码时:

    public knapp seter[]=new knapp[100]; //knapp means button

    int rad=0; //rows
    int sete=0; //seats     
    int antallSeter=0; //number of seats
    for (int i=0;i<10;i++){
        for (int j=0;j<10;j++){
            seter[antallSeter]= new knapp("Rad "+(rad+1)+", Sete "+(sete+1));
            seter[antallSeter].setBackground(Color.GREEN);

            add(seter[antallSeter]); 
            antallSeter++;              
            if(j==10){
                sete=0;
                }else{              
                    sete++; 
                    }           
            }
        rad++;
        }   

    //creates an eventlistener
    Knappelytter lytteren = new Knappelytter();
    seter[antallSeter].addActionListener(lytteren);
    pack();     

如果我这样做:

public knapp seter[]=new knapp[120]; //knapp means button

我收到此错误:

Exception in thread "main" java.lang.NullPointerException
at Vindu.<init>(setevelger.java:64)
at setevelger.main(setevelger.java:22)

这两个错误都是在运行时创建窗口时出现的。

因此,代码应该创建 100 个按钮并将它们存储在一个数组中,每个按钮都有一个行号和座位号。

我被困住了,我不知道该往哪里看。

我应该使用数组列表吗?

最佳答案

在 for 循环中,antalSetter 在上一个循环中增加到 100 - 第一个异常(exception),如果将数组长度增加到 120 - 您将访问索引 100 处的 null 元素。

关于Java:数组索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167450/

相关文章:

c++ - 在 C++ 中将数组编码为 jpeg 图像

visual-studio-2010 - 使用 Visual Studio 2010 时出现 System.OutOfMemoryException

java - Android 能不能识别手机键盘?

java - 通过 html 文件字段将图像文件上传到我的 aws s3 存储桶

javascript - 访问数组中的某个对象

go - 如何在内部完全停止 goroutines 错误

android - 处理 Kotlin Coroutines 中自定义 okhttp 拦截器引发的异常

java - 生成无溢出的安全随机 double

Java-图形绘制

c - 使用数组 wchar 时出错