IndexOutOfBoundsException:长度为0的索引-1超出范围

时间:2019-11-25 23:36:47

标签: java

我正在研究一个给我的用于课堂作业的项目,并且我们正在修改一个允许向图书馆系统添加papatrons的图书馆系统,addbooks已经为我完成,我已将其用作创建addpatrons的模板。我已经完成了,但是每当我尝试创建它时,都会出现以下错误。

 IndexOutOfBoundsException: Index -1 out of bounds for length 0

这是代码出错的地方。

public void execute(Library library, LocalDate currentDate) throws LibraryException {
    int lastIndex = library.getPatrons().size() -1;
    int maxId = library.getPatrons().get(lastIndex).getId();
    Patron patron = new Patron(++maxId, name, phone);
    library.addPatron(patron);
    System.out.println("Patron #" + patron.getId() + " added.");

添加顾客接受两个值,即姓名和电话。

感谢您的时间

2 个答案:

答案 0 :(得分:0)

当大小为0时,索引1的值为-1。您无法访问空数组的位置0,更不用说-1。

您需要在代码中将int lastIndex括起来,以确保您的索引不等于或小于数组的大小。

答案 1 :(得分:0)

如果library.getPatrons().size()0,则您的lastIndex为-1,这不是任何ArrayList的有效索引。您应该添加一个if语句来处理列表大小为0的情况。