Java"线程中的异常" main""错误修复

时间:2015-01-03 14:56:35

标签: java bounds out

目前我正在开发一个应用程序,允许添加,存储,借用,返回到虚拟库中的技术手册。

目前我正在处理允许用户返回他们之前借过的书的部分。当他们进入" 4"在主菜单中,它们将显示当前借用的手册列表。

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

enter image description here

以下是此应用程序的相关代码(如果我需要显示更多内容,请告诉我们):

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的新手!


更新

我已将评论中提出的Christophers建议应用于将ManualList.size()更改为borrowedManuals.size()。

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

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