Crear un sistemas de login con limite de intentos en caso de usuario / contraseña erróneos (JAVA)

Tengo como tarea hacer un sistema de login que al introducir 3 veces mal la contraseña salte un mensaje que diga acceso denegado. Y lo normal usuario contraseña incorrecto o bienvenido si todo esta bien.

He estado haciendo el bucle while pero no consigo hacerlo. De momento tengo es el sistema de login pero sin el contador, me he cansado de intentar de todo. Jajaja

 private void iniciarsesion(){
     int intentos = 4, maximos = 3;
     String User = "CUNPOO";
     String Clave ="50216";
     String Pass = Password.getText();
    if (txtUsuario.getText().isEmpty() || Password.getText().isEmpty()){
    JOptionPane. ShowMessageDialog(null,"Por favor escriba su usuario y contraseña", "Iniciar sesión",
    JOptionPane.INFORMATION_MESSAGE);; 
    }else{     
   if(intentos>maximos){    
   JOptionPane.showMessageDialog(this, "Usuario bloqueado intentos permitidos alcanzados");
   }else{         
    if (txtUsuario.getText().equals(User)&& Pass.equals(Clave)){   
       JOptionPane.showMessageDialog(this, "Bienvenido");  
    }
    else{ 
        JOptionPane.showMessageDialog(this, "Usuario / Contraseña incorrecta, lleva "+intentos+" de 3");  
    }
    }
    }
    }

Me estaba guiando por esto pero no se como adaptarlo ya que este corre pero en consola y lo necesito es grafico.

        Scanner teclado= new Scanner(System.in);
        int login=0;
        int pass=0;
        int intentos=1;
        int maximo=3;
                while((login!=1809)||(pass!=1234)&& (intentos<maximo)){
                    System.out.print("introduzca un login: ");
                    login=teclado.nextInt();
                    System.out.print("Introduzca su pass:");
                    pass=teclado.nextInt();
                    if(intentos==3){
                        System.out.println("acceso denegado..");
                        intentos=intentos-maximo;
                    }
                    intentos++;
            }
            System. Out.println("login y pass, correctos...");
Respuesta
2

Para empezar debes aprender a escribir tu código más legible, debes seguir una sangría (tabulación) del código. Por otro lado tenias un error de sintaxis "te sobra un ;" Luego veo que tienes declarado el numero de intentos a 4 lo que no es correcto, ya que deberías ir incrementando los intentos a medida que la validación de clave y usuario falle. Por otro lado, ignoro desde donde llamas al método iniciarsesion() pero la variable de intentos no debería ir dentro del propio método a no ser que la controles con un bucle que solicite el inicio de sesión yo personalmente tendría la variable a nivel global para controlar el numero de intentos y no reiniciarlo algo así:

    int intentos = 0;
    final int maximos = 3;
    boolean logueado = false;
    private void metodoPrincipal() {
        // desde aqui controlas el login
        while (!(intentos == maximos) && !logueado) {
            logueado = iniciarsesion(intentos);
        }
    }
    private boolean iniciarsesion(final int intentos) {
        String User = "CUNPOO";
        String Clave = "50216";
        boolean respuesta = false;
        String Pass = Password.getText();
        if (txtUsuario.getText().isEmpty() || Password.getText().isEmpty()) {
            JOptionPane. ShowMessageDialog(null, "Por favor escriba su usuario y contraseña", "Iniciar sesión",
                    JOptionPane.INFORMATION_MESSAGE);
        } else {
            if (intentos == maximos) {
                JOptionPane.showMessageDialog(this, "Usuario bloqueado intentos permitidos alcanzados");
            } else {
                if (txtUsuario.getText().equals(User) && Pass.equals(Clave)) {
                    respuesta = true;
                    JOptionPane.showMessageDialog(this, "Bienvenido");
                } else {
                    intentos++;
                    JOptionPane.showMessageDialog(this, "Usuario / Contraseña incorrecta, lleva " + intentos + " de 3");
                }
            }
        }
        return respuesta;
    }

¡Gracias!

Muchísimas gracias. Disculpa por la locura de código estoy empezando en JAVA y la verdad me falta apredenr mucho.

Esto es un trabajo de la escuela pero vamos, que no encontraba ayuda al respecto en ningún lado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas