问题描述
我有一个带有 Java GUI 的项目,我需要从文本文件中获取元素并将它们存储在数组中,我已经完成了所有这些,但是当我运行程序时,它显示了 java.lang.Arrayindexoutofboundsexception: 1
错误消息,并且我不知道我的错误在哪里以及如何解决它。任何帮助将不胜感激。
Scanner input1;
try {
input1 = new Scanner(new FileReader("studentObligation.txt"));
} catch (FileNotFoundException e) {
jLabelStatus.setText("ERROR");
return;
}
counter = 0;
while (input1.hasNext()) {
String inside = input1.nextLine();
String arrayInside[] = inside.split("/t");
array[counter] = new Obligations();
array[counter].setSubjectCode(inputArray[0]);
array[counter].setSubjectName(inputArray[1]);
array[counter].setSubjectTeacher(InputArray[2]);
array[counter].setYear(Integer.parseInt(InputArray[3]));
array[counter].setSemester(InputArray[4]);
array[counter].setEctsCredist(Integer.parseInt(InputArray[5]));
array[counter].setNumberOfObligations(Integer.parseInt(InputArray[6]));
array[counter].setWeightHomework(Integer.parseInt(InputArray[7]));
array[counter].setPointsHomework(Double.parseDouble(InputArray[8]));
array[counter].setWeightLabWork(Integer.parseInt(InputArray[9]));
array[counter].setWeightLabWork(Double.parseDouble(InputArray[10]));
array[counter].setWeightExamTest1(Integer.parseInt(InputArray[11]));
array[counter].setPointsExamTest1(Double.parseDouble(InputArray[12]));
array[counter].setWeightExamTest2(Integer.parseInt(InputArray[13]));
array[counter].setPointsExamTest2(Double.parseDouble(InputArray[14]));
array[counter].setWeightPaperExam(Integer.parseInt(InputArray[15]));
array[counter].setPointsPaperExam(Double.parseDouble(InputArray[16]));
array[counter].setWeightTheoryExam(Integer.parseInt(InputArray[17]));
array[counter].setPointsTheoryExam(Double.parseDouble(InputArray[18]));
array[counter].setWeightExam(Integer.parseInt(InputArray[19]));
array[counter].setPointsExam(Double.parseDouble(InputArray[20]));
array[counter].setWeightProject(Integer.parseInt(InputArray[21]));
array[counter].setPointsProject(Double.parseDouble(InputArray[22]));
array[counter].setFinalGrade(Integer.parseInt(InputArray[23]));
counter++;
解决方法
让我尝试指导您调试问题。异常应该给你抛出异常的行号。当您尝试使用数组中不可用的索引访问数组时,会抛出 ArrayIndexOutOfBoundsException
。鉴于错误是关于索引 1,那么错误似乎是在行
array[counter].setSubjectName(inputArray[1]);
或
array[counter] = new Obligations();
在计数器递增之后。很可能是第一个,堆栈跟踪应该确认它
调试的下一步是找出错误行之前的数组的值。您可以打印出该值并查看它是预期值还是其他值。或者,您可以在 IDE 中逐步调试
如果不是预期值,回溯查看变量值是如何计算的。
由于无法提供确切答案,问题中缺少多项内容
-
array
变量定义 -
inputArray
变量定义 - 使用
arrayInside
变量 - 抛出异常的行
(提示:"/t"
不是 tab
)