package com.javarush.task.task07.task0716;
import java.util.ArrayList;
import java.util.ListIterator;
/*
Р или Л
*/
public class Solution {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<>();
strings.add("роза");
strings.add("лоза");
strings.add("лира");
strings = fix(strings);
for (String string : strings) {
System.out.println(string);
}
}
public static ArrayList<String> fix(ArrayList<String> strings) {
ListIterator<String> iterator = strings.listIterator();
while (iterator.hasNext()) {
if (iterator.next().indexOf('л') != -1 && iterator.next().indexOf('р') == -1) {
iterator.add(iterator.next());
System.out.println(iterator.next());
}
if (iterator.next().indexOf('р') != -1 && iterator.next().indexOf('л') == -1) {
iterator.remove();
System.out.println(iterator.next());
}
}
return strings;
}
}
Пытаюсь использовать итератор, не могу понять что не так.
Выдает ошибку
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:999)
at com.javarush.task.task07.task0716.Solution.fix(Solution.java:27)
at com.javarush.task.task07.task0716.Solution.main(Solution.java:17)
Vladimir Beletsky
23 уровень
Не понимаю итератор
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Wladyslaw Java Developer Master
8 декабря 2019, 10:44полезный
каждый вызов метода next() вернет следующее значение.
У тебя только в этом куске кода на каждой итерации перебирается 4 элемента.
Создай локальную переменную в цикле, вытащи туда очередной элемент 1 раз и потом с ним работай +1
Vladimir Beletsky
8 декабря 2019, 14:42
Спасибо, все получилось)
0