java - 创建多对象时的 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();
}
}
}
}
}
解决方案
dim
应介于0
和之间vek.length-1
,两者都包括在内。否则,您将java.lang.ArrayIndexOutOfBoundsException
到达vek[dim]
. 检查目的和返回值int dim = readInteger();
此外,为了使代码更简单、可读和可调试,重命名变量和方法名肯定会有所帮助。
推荐阅读
- php - 如何将数据库查询构建器转换为 Eloquent 模型
- graphql - 来自结构化对象的 Typeorm 动态查询构建器
- excel-formula - 寻找变量变化的值
- jquery - 在与 v-for @click 方法不同的 vue 组件中调用函数
- c# - 在 PC 上找不到 monodevelop
- clojure - 找不到 clojure/data/json:如何让我的 REPL 看到这个(和类似的)依赖项
- java - AsyncTask 的结果未发布到 Activity 的 TextView
- ruby - 使用 `pi = x * sin(180 / x)` 计算 PI 的值
- sql-server - 使用 LEVENSHTEIN 算法匹配字符串
- c++ - 错误:没有匹配的函数调用“strcmp”