Java "exception in thread "main"" 错误修复

Java "exception in thread "main"" error fix

目前我正在开发一个应用程序,它允许将技术手册添加、存储、借用,returned 到虚拟图书馆。

目前我正在开发允许用户 return 他们以前借过的书的部分。当他们在主菜单中输入“4”时,将显示当前借用手册的列表。

我已经设法显示借来的手册,但我也遇到了一个错误,导致我的 java 应用程序退出,如下所示:

这里是这个应用程序的相关代码(如果我需要显示更多请告诉我):

static void returnManual(){
    System.out.printf("\n\nHere are the Manual/s currently out on loan:\n\n");
    if(ManualList.get(ManualChoice).status.equalsIgnoreCase(status2) && borrowedManuals.size() >= ManualChoice){
    for (int i = 0; i < borrowedManuals.size(); i++)
        System.out.println(borrowedManuals.get(i).displayManual());
        returnManualTitle = Console.readString(Messages.enterManualTitle, Messages.tooShortMessage, 3);
    }

如果有人知道如何解决这个错误,请告诉我:) 我是 Java 的新手!


更新

我应用了评论中克里斯托弗斯的建议,将 ManualList.size() 更改为 borrowedManuals.size()。

现在的问题是,如果用户借了 2 本手册并希望 return 第二本手册,一旦他们输入他们希望[的(第二本)手册的标题名称,他们的标题条目就不会被激活 return。如果输入了第一个手册标题,应用程序将按预期运行并且 return 将手册发送到图书馆。

下面是一个例子。我还更新了我的代码(以上)以包含所做的更改。

if(null != ManualList && ManualList.size() >= ManualChoice &&
          ManualList.get(ManualChoice).status.equalsIgnoreCase(status2) ){
for (int i = 0; i < ManualList.size(); i++)
    if(borrowedManuals.size() > i)  // check borrowedManuals size its better to check this in if where you check for ManualList 
       System.out.println(borrowedManuals.get(i).displayManual());
       returnManualTitle = Console.readString(Messages.enterManualTitle, Messages.tooShortMessage, 3);
    }
 }

首先检查 ManualList 不是 null 然后检查 ManualList.size() >= ManualChoice ManualList 大小是否大于 ManualChoice 然后从该索引中获取值以便它会不给你IndexOutOfBoundException