Для этой программы мы должны создать LinkedList типа Song. Песня содержит две переменные экземпляра, название и исполнитель. Пользователю предлагается ввести команду (добавить, удалить, распечатать или выйти). У меня проблемы с методом remove. Нам не разрешено использовать регулярный или расширенный цикл для итерации через LinkedList. Он говорит, что для нашего метода удаления мы должны использовать ListIterator remove(), а не LinkedList remove(). Вот что я получил за цикл., используя итератор списка для итерации по связанному списку Java
Scanner input = new Scanner (System.in);
LinkedList<Song> songList = new LinkedList<Song>();
ListIterator<Song> iter = new songList.listIterator();
boolean done = false;
while (!done) {
System.out.print ("Please enter a command (add, remove, print or quit): ");
String command = input.nextLine();
if (command.equals(QUIT)) {
// If quit, then exit the loop.
done = true;
} else if (command.equals(ADD)) {
addSong(songList, input);
songCount++;
} else if (command.equals(REMOVE)) {
System.out.print ("Please enter song title: ");
String removeTitle = input.nextLine();
while (iter.hasNext()) {
String checkSong = iter.next().getTitle();
if (removeTitle.equals(checkSong)) {
iter.remove();
}
}
} else if (command.equals(PRINT)) {
.
.
.
}
}
Каждый раз, когда я запускаю это я получаю ошибку java.util.ConcurrentModificationException и я не уверен, что это и как это исправить. Любая помощь? Я знаю, что проблема заключается в методе удаления.
действительно ли это происходит при первом удалении? –
Да, в первый раз, когда я вызываю удаление, это дает мне эту ошибку. Я пробовал это только с одной песней, думая, что это может быть что-то со списком, затем я попробовал это с 4-5 песнями и до сих пор получил эту ошибку. – GenericUser01
Это происходит без добавления? Я бы создал итератор только тогда, когда функция удаления обнаружена (и отменит ее впоследствии). Не держите его в нескольких добавлениях. – eckes