目前我正在开发一个应用程序,允许添加,存储,借用,返回到虚拟库中的技术手册。
目前我正在处理允许用户返回他们之前借过的书的部分。当他们进入" 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的新手!
我已将评论中提出的Christophers建议应用于将ManualList.size()更改为borrowedManuals.size()。
现在的问题是,如果用户借用了2本手册并希望返回第二本手册,则一旦他们输入了他们希望返回的(第二)手册的标题名称,他们的标题条目就不会被激活。如果输入了第一个手册,则应用程序按预期运行并将手册返回到库中。
以下是此示例。我还更新了我的代码(上面)以包含所做的更改。
答案 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