#java #arraylist
Вопрос:
У меня есть эта программа, в которой мне нужно удалить значение из списка массивов и значение после этого, если значение меньше 10.
Вот пример:
Исходный список массивов:
[20, 40, 15, 4, 25, 50, 45]
Измененный список массивов: (если значение меньше 10)
[20, 40, 15, 50, 45] — (Удалены 4 и 25, потому что 4 меньше 10)
Я создал программу, которая удаляет значение, меньшее 10, но я не могу понять, как удалить и второе значение.
Я попытался создать переменную логического перезапуска, которая имеет значение true, если цикл for-each удаляет значение, меньшее 10. Но я застрял.
Вот мой код:
Scanner sc = new Scanner(System.in); int numberOfMeasurements = sc.nextInt(); boolean restart = false; ArrayListlt;Integergt; measurements = new ArrayListlt;Integergt;(); for(int i = 0; i lt; numberOfMeasurements; i ) { measurements.add(sc.nextInt()); } ArrayListlt;Integergt; measurementsTwo = new ArrayListlt;gt;(); for (int i : measurements) { if (i gt; 10) { measurementsTwo.add(i); restart = true; } } measurements = measurementsTwo; System.out.println(measurements);
Если описание неточное, просто скажите это, и я постараюсь прояснить свою проблему.
Ответ №1:
Старый добрый итератор должен делать:
for (Iteratorlt;Integergt; it = measurements.iterator(); it.hasNext();) { if (it.next() lt; 10) { it.remove(); if (it.hasNext()) { // ensures no failure if `it` was at last element it.next(); it.remove(); } } }