Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at assg3_Tram.DVDCollection.remove(DVDCollection.java:60)
at assg3_Tram.DVDApplication.main(DVDApplication.java:95)
スイッチ/ケースで選択肢 4 (リストから DVD オブジェクトを削除) を選択して、プログラムを開始します。そして、「Adam」と入力すると、正常に削除されます。その後、メニューが再び繰り返され、「Mystic River」を削除するためにもう一度 4 を選択します。それも正常に削除されます。メニューが再び繰り返され、再び 4 を選択します。今度は「Mystic Rivers」と入力すると ('s' を付けて、その DVD がリストにないことをテストします)、そのエラーが表示されます。関連するコードと、読んでいる .txt リストを含めました。
.txt ファイルからの情報を ArrayList に入力しています。各 DVD オブジェクトには 5 つの情報があります。そして、各ピースは1つの別々のラインです。
public DVD remove(String removeTitle) {
for (int x = 0; x <= DVDlist.size(); x++) {
if (DVDlist.get(x).GetTitle().equalsIgnoreCase(removeTitle)) { // This is line 60.
DVD tempDVD = DVDlist.get(x);
DVDlist.remove(x);
System.out.println("The selected DVD was removed from the collection.");
wasModified = true;
return tempDVD;
}
}
System.out.println("DVD does not exist in the current collection\n");
wasModified = false;
return null;
}
そして私のメインクラスでは:
case 4: {
System.out.print("Enter a DVD title you want to remove: ");
kbd.nextLine();
String titleToRemove = kbd.nextLine();
DVD dvdToRemove = dc.remove(titleToRemove); // This is line 95
if (dvdToRemove != null)
System.out.println(dvdToRemove);
System.out.print("\n");
break;
}
リストを含む .txt ファイルを読み込みます。
Adam
Documentary
78 minutes
2012
7.99
Choo Choo
Documentary
60 minutes
2006
11.99
Good Morning America
Documentary
80 minutes
2010
9.99
Life is Beautiful
Drama
125 minutes
1999
15.99
Morning Bird
Comic
150 minutes
2008
17.99
Mystic River
Mystery
130 minutes
2002
24.99