微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Java jframe 中解决 java.lang.ArrayIndexOutOfBoundsException: 1?

如何解决如何在 Java jframe 中解决 java.lang.ArrayIndexOutOfBoundsException: 1?

我有一个带有 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。