IDの整数を含む "student_id"という配列があるプログラムを作成しています。私は、以下に含まれている配列からIDを削除できるメソッドを作成しました。しかし、テストしようとすると、次のエラーが発生します。Javaエラー:スレッド "main" java.lang.IndexOutOfBoundsExceptionの例外:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 332, Size: 3
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.remove(ArrayList.java:492)
at Module.removeStudent(Module.java:40)
at TestModule.main(TestModule.java:19)
どうしたのですか?ありがとうございました。
public boolean removeStudent(int id){
//removes a student from the module
if (id >= 100 && id <= 99999999 && student_id.contains(id)){
student_id.remove(id);
return true;
} else {
return false;
}
}
System.out.println("Testing removeStudent, the following inputs should return true");
System.out.println("28262722: " + (test1.removeStudent(28262722)));
あなたは3つのアイテムしか保持していないArrayListから332'ndオブジェクトを削除しようとしています。これは、プログラムロジックを見直して修正する時間です。 –
おそらく、異なるremoveオーバーロードを使用したいと思うかもしれません - それはObjectパラメーターを取るものです。これを行うには、StudentクラスがequalsとhashCodeを正しくオーバーライドする必要があります。 –
あなたのエラーはこの問題について説明しています: 'IndexOutOfBoundsException'は通常、アクセスしようとしているインデックスが範囲外である場合に発生します。存在しないかもしれないインデックス '28262722'を削除しようとしていますが、あなたがしたいのは、私が思うそのインデックスの代わりにidを削除することです。 –