【发布时间】:2015-01-03 14:56:34
【问题描述】:
目前我正在开发一个应用程序,该应用程序允许添加、存储、借用、返回虚拟图书馆。
目前我正在研究允许用户归还他们以前借过的书的部分。当他们在主菜单输入“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 还很陌生!
更新
我已经应用了 cmets 中提出的 Christophers 建议,将 ManualList.size() 更改为 borrowedManuals.size()。
现在的问题是,如果用户借了两本手册并希望归还第二本手册,一旦他们输入了他们希望归还的(第二本)手册的标题名称,他们的标题条目就不会被激活。如果输入了第一个手册标题,应用程序将按预期运行并将手册返回到库。
下面是一个例子。我还更新了我的代码(上面)以包含所做的更改。
【问题讨论】:
-
您确定
ManualList和borrowedManuals的大小相同吗? -
你为什么使用ManualList.size()而不是借用Manuals.size()?您正在尝试访问只有 2 个元素的列表中的第三个元素。 (索引 2 表示从 0 开始的第 3 个元素)
-
另外,不要以首字母大写命名变量/字段。字段和变量的约定是小写首字母,类名的首字母大写。它会混淆代码着色并降低代码的可读性。
-
@ChristopherShannnon 感谢您的回复,我已经实施了您的建议并更新了我的答案,出现了一个新问题
-
您不应该将您的问题从一个主题更改为另一个主题。超出范围的索引是固定的,所以为您的新问题打开一个新问题。