0

这是一项大学作业(学术报告样本),我以为我已经完成并准备提交,但是当我开始测试时……我一直在 main 的第 60 行收到 ArrayIndexOutOfBoundsException ,我不明白为什么。我是 Java 新手,但确实在这个程序上投入了很多时间。非常感谢任何帮助/建议。第 60 行 = “int credits = Integer.parseInt(input[1]);” //我认为错误是由于数据类型引起的???我迷路了。

Course / Grade / Report 类将数据传递给主 java2pgm1

4

4 回答 4

0

这里输入数组的大小可能是 0 或 1,你可以通过input.length. 如果数组的大小小于或等于要从数组中获取的元素,则抛出运行时异常 ArrayIndexOutOfBoundsException。

于 2013-09-23T06:22:34.580 回答
0

当用户的输入与预期格式不符时,将发生异常course_number:number_of_credits:grade_received:term_taken。在您的情况下,您遇到此异常的输入值是什么?它是否包含一个:?

建议大家input在引用index[n]之前先测试一下数组的长度

于 2013-09-21T03:54:05.953 回答
0

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

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

输入数组可能不包含超过 1 个值,因此它会失败

于 2013-09-21T03:53:07.327 回答
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]);

您的 main 中的上述代码段始终假定course字符串中包含 abc:def:ghi:jkl 至少 3 个“:”。当字符串没有 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
}
于 2013-09-21T04:01:56.123 回答