首页 > 解决方案 > 创建多对象时的 java.lang.ArrayIndexOutOfBoundsException

问题描述

我一直在研究这个程序,最后一件事是,我试图创建一个包含“一个”对象的数组,这样它就可以动态地创建对象。

无论如何,我不断收到上面的错误,我不知道为什么?将不胜感激,如果 any1 可以帮助!

我写了一条关于错误出现位置的评论......

谢谢 :)

    public static void main (String [] args) {


            int an= readInteger ("Mit wie vielen Vektoren möchten Sie rechnen: ");
            //Polynom v = new Polynom (an); // generates "an" number of vectors

            //dies ForLoop ist fuer die Rechnung von v1, v2, usw..
            for (int i =0; i<an;i++) { 
                System.out.println("Vektor v" +(i+1));

                System.out.println("Welche Dimension soll der Vektor" +(i+1) +" besitzen: ");
                int dim = readInteger();

            System.out.println("Wie soll der Vektor gefüllt werden? \n"
                    + "(1) Werte eingeben  \n"
                    + "(2) Vektor mit Zufallszahlen füllen \n"
                    + "(3) Vektor mit Nullen füllen \n");


                Polynom [] vek = new Polynom [an]; // create array of "a" number of elements
                                                   // that holds objects addresses
                // this will create objects in a loop
                for (int  x = 0; x < vek.length; x++) { 
                    vek [x] = new Polynom(x+1); //this will call constructor

                    //Generiert "an" Anzahl von Objekten
                    int a = readInteger(); 
                    System.out.println("Auswahl: "+a +"\n");
                    if (a==1) {
                        System.out.println("Bitte geben Sie die Elemente des Vektors ein: ");
                        vek[dim].eingabe(); //ERROR IS HERE
                        vek[dim].ausgabe(); 
                    }
                    else if (a==2) {
                        System.out.println(dim +" Zufallsvariablen wurden generiert ");
                        vek[dim].Zufallszahlen(); //ERROR ALSO HERE
                        vek[dim].ausgabe();
                    }
                    else if (a==3) {
                        System.out.println("Die " +dim +" Vektoren wurden mit Nullen gefuellt ");
                        vek[dim].Nullen(); //ERROR
                        vek[dim].ausgabe(); 
                    }
                }

            }

    }

}

标签: javaarraysobject

解决方案


dim应介于0和之间vek.length-1,两者都包括在内。否则,您将java.lang.ArrayIndexOutOfBoundsException到达vek[dim]. 检查目的和返回值int dim = readInteger();

此外,为了使代码更简单、可读和可调试,重命名变量和方法名肯定会有所帮助。


推荐阅读