Если вы прочитаете документацию для List.remove()
, вы увидите, что элементы после индекса i
смещены влево.Это означает, что в вашей текущей реализации вы пропускаете один элемент после каждого удаления, поэтому, если рядом находятся два элемента, размер которых превышает 5, будет удален только один из них.
Что вы можетеdo также сдвигает назад текущий индекс на один шаг после удаления элемента с i--;
.Таким образом, ваш код станет
public static void main(String args[]) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(4);
list.add(56);
list.add(6);
for (int i = 0; i < 4; i++){
String s = reader.readLine();
list.add(Integer.parseInt(s));
}
for (int i = 0; i < list.size(); i++){
if (list.get(i) > 5) {
list.remove(i);
i--;
}
}
System.out.println(list);
}
. В результате вы получите [3, 4, 1]
, удалив все числа больше 5.