Meu método dá erro!

Estou praticando java e no meu código eu fiz um método pra fazer login, comparar um login e senha que o usuário digitou com o login e senha da lista, mas não está dando certo.Já tentei de várias formas. podem me ajudar?

public void fazerLogin(String login,int senha){
         Estudante element = null;
        for (Iterator<Estudante> iter = estudantes.iterator(); iter.hasNext(); ) {
        
        
          element = iter.next();
        
         if(element.getLogin().equals(login) && element.getSenha()==senha){
              System.out.println("login certo");
              System.out.println("senha certa");
              break;
         }else{
              System.out.println("login errado");
              System.out.println("senha errada");
              break;
        
            }
         
        }

Como vc está preenchendo a lista de estudantes?

public static void main(String[]args){
        Scanner s=new Scanner(System.in);
        Estudante p1=new Estudante("Rami Malek","546453459","535678676",
       "Rua Artur Paulo,106",22,"Malek@hotmail.com","Malek1",246812);
        Estudante p2=new Estudante("John wick","23752476556","987564854",
        "Rua Artur Paulo,108",32,"John@hotmail.com","John12",12345);
        DadosEstudante e1=new DadosEstudante();
        e1.adicionaEstudante(p1);
        e1.adicionaEstudante(p2);
        e1.imprimeEstudantes();
         System.out.println("Digite seu login:");
        String log=s.nextLine();
        System.out.println("Digite sua senha:");
        int senha=Integer.parseInt(s.nextLine());
        e1.fazerLogin(log, senha);
        
        
     }

O Estudante p1 dá certo mas o p2 não.

Eu guardo esses dados dentro de uma arraylist na classe DadosEstudante.

Porque estás a percorrer uma lista mas apenas comparas o primeiro valor e escreves sucesso ou errado consoante esse valor e fazes break.

Assim não funcionou?

public void fazerLogin(String login,int senha){
    for (Estudante element : estudantes) {
        if (element.getLogin().equals(login) && element.getSenha().equals(senha)){
            System.out.println("login certo");
            System.out.println("senha certa");
            return;
        }
    }
    System.out.println("login errado");
    System.out.println("senha errada");
}
3 curtidas

deu certo! muito obrigada! da forma como eu estava usando com o iterator estava dando errado mas agora com seu código deu certo. obrigada!

1 curtida

O problema não era o Iterator, o problema era aquele else dentro do laço.