es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comprobador de contraseñas Java con caracteres especiales.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código ni la salida en markdown.

Soy muy nuevo en Java, por favor paciencia conmigo.
Mi tarea:
Pedir al usuario que introduzca una contraseña y escribir un mensaje indicando si es aceptable o no. Requisitos de la contraseña:
1. la contraseña tiene al menos 8 caracteres
2. tiene letras mayúsculas y minúsculas
3. al menos una letra va seguida de un número
4. tiene uno de los siguientes caracteres especiales: $#?!_-=%

Realmente no sé qué hacer en el punto 3 y 4. He leído algo sobre regex, pero ni siquiera lo hemos visto en clase. ¿Hay otros métodos posibles?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, existen otros métodos para cumplir con los requisitos de contraseña sin utilizar regex. Para el requisito 3, puedes recorrer cada carácter de la contraseña y comprobar si es una letra o un número. Una vez que encuentres una letra, puedes empezar otro bucle desde el siguiente carácter para comprobar si le sigue un número. Para el requisito 4, puedes utilizar el método contains para comprobar si la contraseña contiene algún carácter especial.

    Aquí te mostramos un ejemplo de código:

    import java.util.Scanner;
    
    public class PasswordChecker {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("Introduce una contraseña: ");
            String password = scanner.nextLine();
    
            if (password.length() < 8) {
                System.out.println("La contraseña es demasiado corta");
            } else if (!password.matches(".*[a-z].*") || !password.matches(".*[A-Z].*")) {
                System.out.println("La contraseña debe tener letras mayúsculas y minúsculas");
            } else {
                boolean letraSeguidaDeNumero = false;
                for (int i = 0; i < password.length() - 1; i++) {
                    char c1 = password.charAt(i);
                    char c2 = password.charAt(i + 1);
                    if (Character.isLetter(c1) && Character.isDigit(c2)) {
                        letraSeguidaDeNumero = true;
                        break;
                    }
                }
                if (!letraSeguidaDeNumero) {
                    System.out.println("La contraseña debe tener una letra seguida de un número");
                } else if (!password.contains("$") && !password.contains("#") && !password.contains("?")
                        && !password.contains("!") && !password.contains("_") && !password.contains("-")
                        && !password.contains("=") && !password.contains("%")) {
                    System.out.println("La contraseña debe contener uno de los caracteres especiales: $#?!_-=%");
                } else {
                    System.out.println("La contraseña es aceptable");
                }
            }
        }
    }
    

    En este código, primero comprobamos si la contraseña tiene al menos 8 caracteres y tiene letras mayúsculas y minúsculas. Luego, recorremos cada carácter para comprobar si hay una letra seguida de un número. Por último, comprobamos si la contraseña contiene alguno de los caracteres especiales.

    Espero que esto te ayude. Hazme saber si tienes alguna pregunta más.

Comments are closed.