Estou tendo problema com essa parte do meu código, é um exercício do meu curso, ele funciona direitinho exceto em uma parte, que eu n tenho a mínima ideia de como resolver
qualquer ajuda é bem vinda
id é int
System.out.println("Digite o id: ");i=in.nextInt();//atribuiovalordigitadoemifor(Triangulot:triangulos)//oerroestáaqui{if(t.getId()==i)//comparaicomalgumidarmazenadonalista{triangulos.remove(t);//removeoitemdalista}}
Quando vc faz o for aprimorado ou usando iterator a cada iteração ele checa se lista não foi modificada dai caso ela esteja modificada ela lança a Exceção:
java.util.ConcurrentModificationException
aqui uns exemplos que vc pode remover um item de um arraylist sem usar o for aprimorado :
//removendo com iterator//nessa caso vc pode remover com o proprio objeto Iterator e nao com objeto ArrayListList<String>listOfBooks=newArrayList<>();listOfBooks.add("Programando com Java");listOfBooks.add("Programando C#");listOfBooks.add("Melhor Java");listOfBooks.add("Código completo");System.out.println("Lista antes : "+listOfBooks);Iterator<String>iterator=listOfBooks.iterator();while(iterator.hasNext()){Stringbook=iterator.next();System.out.println("Removendo "+book);if(book.equalsIgnoreCase("Programando C#")){iterator.remove();}}System.out.println("Lista depois : "+listOfBooks);System.out.println("-------------------------------------------------");//----------------------------------//removendo com for tradicio0nalList<String>listOfBooks2=newArrayList<>();listOfBooks2.add("Programando com Java 2 ");listOfBooks2.add("Programando C# 2");listOfBooks2.add("Melhor Java 2");listOfBooks2.add("Código completo 2");System.out.println("Lista antes : "+listOfBooks2);for(inti=0;i<listOfBooks2.size();i++){Stringbook=listOfBooks2.get(i);if(book.contains("Programando")){System.out.println("Removendo "+book);listOfBooks2.remove(i);// will throw CME}}System.out.println("List depois : "+listOfBooks2);