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.

Tipo de argumento improbable para equals(): parece que el String no está relacionado con el char[].

Entonces, estoy escribiendo código para que se ingrese un nombre de usuario y contraseña cuando se lo solicite. Estoy teniendo problemas para extraer la contraseña de la entrada del usuario y compararla con lo que debería ser el nombre de usuario/contraseña. Tengo esto cuando se presiona el botón de enviar:

char[] password = passwordInput.getPassword();
                String username = usernameInput.getText();
            try {
                if (username.equals(user1) && password.equals(password1)) {

                    JOptionPane.showMessageDialog(null, "Éxito");
                }

                else {
                    JOptionPane.showMessageDialog(null, "¡Nombre de usuario/contraseña incorrectos!");

                }

y también inicialicé el nombre de usuario y la contraseña correctos al principio del script con
String user1 = "uccs", password1 = "1234";

No estoy seguro si necesito convertir la entrada de contraseña en una cadena. Intenté char password = 1234;, pero eso tampoco funcionó.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás en el camino correcto, pero hay algunas cosas que puedes mejorar en tu código.

    En primer lugar, actualmente estás comparando la entrada de contraseña como un arreglo de caracteres (char[]) con la contraseña correcta como una cadena de texto. Esto no funcionará ya que son dos tipos de datos diferentes. Necesitas convertir la entrada de contraseña de char[] a String antes de compararlos.

    Puedes usar el constructor de la clase String para convertir el char[] a String de la siguiente manera:

    String inputPassword = new String(password);
    

    Luego puedes comparar inputPassword con la contraseña correcta como se muestra en tu código.

    En segundo lugar, al comparar cadenas de texto, debes usar el método equals() en lugar del operador ==. Entonces, en lugar de usar username.equals(user1) && password.equals(password1)), utiliza username.equals(user1) && inputPassword.equals(password1)).

    Finalmente, en lugar de usar el operador &&, debes utilizar el operador && para verificar la condición Lógica AND.

    Aquí está el código actualizado:

    char[] password = passwordInput.getPassword();
    String username = usernameInput.getText();
    
    // Convertir a String
    String inputPassword = new String(password);
    
    try {
        if (username.equals(user1) && inputPassword.equals(password1)) {
            JOptionPane.showMessageDialog(null, "Éxito");
        } else {
            JOptionPane.showMessageDialog(null, "¡Nombre de usuario/contraseña incorrectos!");
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    

    ¡Espero que esto sea de ayuda!

Comments are closed.