Porblemas com while

Olá amigos, estou com um problema com o while, e por isso peço que me ajudem.

se insiro 3 alunos no arraylist turma e depois excluo 1 deles ou 2 aparece a mensagem de excluido mais de uma vez e junto com a mensagem de erro ao excluir.

[code] public void exluirAluno(){

        String nome=inf.lerAlunoExluido();
        Iterator it = turma.iterator();

            while(it.hasNext()){
               Aluno aluno=(Aluno) it.next();
                if (nome.equals(aluno.getNome()))
                { 
                it.remove();
                System.out.println("Aluno excluido!");
                }
                else System.out.println("erro ao excluir aluno"); 
            }
    } [/code]

Tente assim:

	public void exluirAluno() {

		String nome = inf.lerAlunoExluido();
		Iterator it = turma.iterator();

		while (it.hasNext()) {
			Aluno aluno = (Aluno) it.next();
			if (nome.equals(aluno.getNome())) {
				try {
					it.remove();
					System.out.println("Aluno excluido!");
					
				} catch (Exception e) {
					System.out.println("erro ao excluir aluno");
				}
			}	
		}
	}

cara debuga o codigo antes d remover o aluno da um print em qual aluno,pq aparentemente esta certo

Olá amigo o problema continua, quando insiro 3 alunos no arraylist turma ele exclui dá a mensagem “Aluno excluido” e depois 2 vezes “erro ao excluir aluno”

faz os seguinte colo isso no codigo

   1. public void exluirAluno() {  
   2.   
   3.     String nome = inf.lerAlunoExluido();  
   4.     Iterator it = turma.iterator();  
   5.   
   6.     while (it.hasNext()) {  
   7.         Aluno aluno = (Aluno) it.next();  
                 System.out.println(nome +" | "+ aluno.getNome());
   8.         if (nome.equals(aluno.getNome())) {  
   9.             try {  
  10.                 System.out.println(aluno.getNome());  
                         it.remove();  
  11.                 System.out.println("Aluno excluido!");  
  12.                   
  13.             } catch (Exception e) {  
  14.                 System.out.println("erro ao excluir aluno"); 
                        e.printStackTrace() 
  15.             }  
  16.         }     
  17.     }  
  18. }  

e posta oq deu no console

Analise esta parte do código:


            
                    if (nome.equals(aluno.getNome()))
                    { 
                    it.remove();
                    System.out.println("Aluno excluido!");
                    }
                    else System.out.println("erro ao excluir aluno"); 
              

ele vai pesquisar cada indice do vetor, se o nome nao for igual ele mostra o “erro ao excluir aluno”.
Sendo assim, se o nome a ser excluido é o ultimo ele vai mostrar erro para os primeiros, o correto é fazer como o Gbzao! falou…

Colocar um try catch, para que de erro somente se ocorrer uma falha ao excluir e não se não for o procurado.

Espero que entenda!
abraço

iii viajei desculpa eu estava olhando o codigo do dbzao,o seu pelo o else vai exibir erro qnts vezes o nome do aluno for diferente da variavel nome !!!

Oi ffiorim,

Eu acho que o problema está relacionado ao fato de você estar excluindo um objeto que esta em uma lista na qual está havendo uma iteração.

Se isso for verdade, talvez ao excluir você tenha que abandonar a iteração (break) logo em seguida.

Dê uma olhada na stack trace da exception e reflita sobre isso, se não resolver post a stack trace pra gente dar uma olhada também.

System.out.println( “Abraços!” );

excluindo o aluno “gg”:

[quote]Digite o nome do aluno a ser exluido:
gg
gg | gg
gg
Aluno excluido!
gg | hh
gg | gg
gg
Aluno excluido![/quote]

excluindo o aluno que não existe:

[quote]Digite o nome do aluno a ser exluido:
gg
gg | gg
gg
Aluno excluido!
gg | hh
gg | gg
gg
Aluno excluido![/quote]

o q tem errado ai ?

:?: Juro que não entendi!