Boa tarde, estou com um problema em uma parte da minha aplicação. é um array list , pecorro ele usando um for, para encontrar um usuário que está na lista, comparando nome e senha, mas quando passa para o 2° elemento ou outro em diante, o aparece que a senha está errada, vou postar o codigo que fica mais facil de entender.
[code] String nomeProfessor=jTextField1.getText();
String senhaProfessor = new String(jPasswordField1.getPassword());
for(int i=0;i<telaAnterior.getTelaAnterior().getDiretor().getLista_professor().size();i++)
{
if(nomeProfessor.equalsIgnoreCase(telaAnterior.getTelaAnterior().getDiretor().getLista_professor().get(i).getNome())&&
senhaProfessor.equals(telaAnterior.getTelaAnterior().getDiretor().getLista_professor().get(i).getSenha()))
{
serieProfessor=telaAnterior.getTelaAnterior().getDiretor().getLista_professor().get(i).getTurma();
JOptionPane.showMessageDialog(null, " LOGIN REALIZADO COM SUCESSO " );
telaAnterior.getMenuProfessor().setVisible(true);
this.setVisible(false);
// telaAnterior.setVisible(false);
}
else
{ // corrigir isso, quando da um loop da a msg errada, tentar otimizar o for
JOptionPane.showMessageDialog(null, "senha errada, tente novamente ");
this.setEnabled(true);
}
}
[/code]
apenas 1 dos resultados do arrayList vai bater o usuario e senha correto?
então acredito que o loop esteja certo, voce precisa apenas dar um break na repeticao dentro do if que está ok para parar o loop caso encontre o resultado esperado
Eu coloquei o break, dentro do if, mas ainda aparece a msg JOptionPane.showMessageDialog(null, "senha errada, tente novamente "); , se o professor tiver indice 0 passar normal, mas se o indice for maior que 0, o for recomeça e mostra a msg de senha errada…
for (Professor professor : telaAnterior.getTelaAnterior().getDiretor().getLista_professor()) {
if (professor.getNome() && senhaProfessor.equals(professor.getSenha())) {
serieProfessor = professor.getTurma();
telaAnterior.getMenuProfessor().setVisible(true);
this.setVisible(false);
return true;
}else{
this.setEnabled(true);
return false;
}
}
}
private void validarLogin(){
if(verificarLogin(jTextField1.getText(), jPasswordField1.getPassword())){
JOptionPane.showMessageDialog(null, " Login Realizado com Sucesso! " );
}else{
JOptionPane.showMessageDialog(null, "Usuário ou Senha Inválida! ");
}
}
[/code][/quote]
E fica mais fácil de entender o código, uma vez eu apreendi que quando vc programa e o seu código fica cada vez mais parecido como um livro é que o código realmente está ficando bom ^^
Mas como ficaria se o usuário digitasse a senha errada? [quote]
Então não podes mandar a mensagem sempre que o que encontras não é o que queres mas apenas no fim, senão encontraste o que querias.[/quote]
[quote=Sg5001]Mas como ficaria se o usuário digitasse a senha errada? [quote]
Então não podes mandar a mensagem sempre que o que encontras não é o que queres mas apenas no fim, senão encontraste o que querias.[/quote][/quote]
Olha o código que mandei como resposta. Acho que tira a suas duvidas.
Cara tem um problema com o codigo que você mandou, ele só verifica o primeiro professor, se cadastrar outro ele não verifica e mostra que a senha está errada…