接收ArrayIndexOutOfBoundsException但无法弄清楚原因

时间:2013-09-21 03:48:46

标签: java exception arraylist variable-assignment

这是一项大学任务(样本学术报告),我以为我已经完成并将要提交,但是当我开始测试时...我在主要的第60行继续接收ArrayIndexOutOfBoundsException,我看不出原因。我是Java的新手,但实际上花了很多时间进入这个程序。非常感谢任何帮助/建议。 第60行=“int credits = Integer.parseInt(input [1]);” //我认为错误是数据类型的原因???我迷路了。

课程/成绩/报告类将数据传递给主java2pgm1

4 个答案:

答案 0 :(得分:0)

当你调用split时,它会返回一个数组。在这里你使用(“:”)分裂 在访问变量输入之前,您需要检查变量输入的长度。

    String[] input = course.split(":");
    int credits = Integer.parseInt(input[1]);

输入数组可能不包含多于1个值,因此失败

答案 1 :(得分:0)

当用户的输入与预期格式course_number:number_of_credits:grade_received:term_taken不对应时,将发生异常。在你的情况下,你遇到了什么输入值这个例外?它是否包含:

建议您在引用index [n]

之前测试input数组的长度

答案 2 :(得分:0)

String[] input = course.split(":");
int credits = Integer.parseInt(input[1]);
Integer term = Integer.parseInt(input[3]);
Course cObject = new Course(input[0],credits,input[2],input[3]);

你主要的上述片段总是假设course字符串有abc:def:ghi:jkl atleast 3“:”in。当字符串没有3“:”时,处理错误情况总是好的做法。将您的代码修改为以下内容

String[] input = course.split(":");
if(input.length == 4)
{
    int credits = Integer.parseInt(input[1]);
    Integer term = Integer.parseInt(input[3]);
    Course cObject = new Course(input[0],credits,input[2],input[3]);
}
else
{
    //show some error message to user
}

答案 3 :(得分:0)

此处输入数组的大小可以是0或1,您可以通过input.length进行检查。 如果数组的大小小于或等于要从数组获取的元素,则抛出运行时异常ArrayIndexOutOfBoundsException。