Я создаю программу, в которой есть массив с именем «student_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)));
Вы пытаетесь удалить объект 332'nd из ArrayList, который содержит только 3 элемента - время, чтобы просмотреть вашу программную логику и исправить ее. –
Возможно, вы захотите использовать другую удаленную перегрузку - ту, которая принимает параметр Object. Чтобы это сработало, вашему классу Student необходимо правильно переопределить значения equals и hashCode. –
Ваша ошибка объясняет проблему: 'IndexOutOfBoundsException' обычно возникает, когда индекс, который вы пытаетесь получить, выходит за пределы допустимого диапазона. Вы пытаетесь удалить индекс '28262722', который может не существовать, но вы хотите удалить идентификатор вместо этого индекса, который я думаю. –