0

Quizá esto sea algo muy fácil, pero soy un novato, tengo el siguiente método:

 public void validar(String pass, String pass2,String nombre){
 //Función que no permite espacios en blanco
 boolean espacios = false;
 int x = 0;
 while (!espacios && (x < pass.length())) {
 if (pass.charAt(x) == ' ')
 espacios = true;
 x++;
  } //Lanza un mensaje si detecta algún espacio en blanco
 if (espacios) {
 JOptionPane.showMessageDialog(null, "No esta permitido dejar espacios en blanco");
 } else{
 //IF QUE NO PERMITE CAMPOS VACIOS
        if(nombre.length()==0 && (pass.length()==0) 
                || (pass.length() == 0) ||
                (nombre.length()==0)){
            //NO PERMITIR CAMBOS VACIOS
 JOptionPane.showMessageDialog(null, "NO DEJES CAMPOS VACIOS");     
 }
 else {
 //FUNCIÓN QUE RECHAZA EL REGISTRO SI LAS CONTRASEÑAS NO COINCIDEN
   if (pass == null ? null != pass2 : !pass.equals(pass2)) {
  JOptionPane.showMessageDialog(null,"Las contraseñas no coinciden");}         
 }
 }   
 }

El cual, básicamente no permite que se siga ejecutando si

  1. las contraseñas tienen espacio,
  2. si las contraseñas están vacías,
  3. si las contraseñas no coinciden.

Lo que hago es llamar ese método desde un botón, en donde registro usuarios a una base de datos. La cosa es que a pesar de que están contraseñas no cumplen con las condiciones de ese método, el código sigue ejecutando y manda a los usuarios a la base de datos a pesar de que yo quiero que se deje de ejecutar si no cumplen las condiciones del método.

Para que se entienda mejor: introducir la descripción de la imagen aquí

No quiero que el resto del código se ejecute si no se cumplen las condiciones que están dentro del método que esta dentro del circulo rojo. Gracias por su atención

Alfabravo
  • 7,352
  • 5
  • 21
  • 31
alexvargas6
  • 115
  • 1
  • 10
  • Haz que el método retorne algo y lo usas como flag para determinar si debes o no seguir cuando prosiga la ejecución del `onActionPerformed` – Alfabravo May 26 '20 at 14:19

1 Answers1

0

Como lo comentó Alfabravo, puedes retornar un tipo de dato (booleano, por ejemplo) donde determines si tu método validar cumple o no con las condiciones que necesitas (en este caso, que tu contraseña se valide).

public boolean validar(String pass, String pass2,String nombre)
{
  //Función que no permite espacios en blanco
  boolean espacios = false;
  //Aquí toda tu función de validación de contraseña
  return espacios;
 }

Y esto lo pones en tu método de awt.

boolean espacios = val.validar(txt_pass.getText(),txt_pass2.getText(),txt_nombre.getText())

if(!espacios)
{
  //Código que quieres que se ejecute
}
else
{
 //Mensaje de que no se permiten espacios en blanco
}

Si tienes alguna duda, coméntala.

Alma H.
  • 1
  • 2
  • Muchas, muchas gracias, me has ayudado a evitar un código espagueti, ahora ya puedo validar que las contraseñas no tengan espacios en blanco, pero me pregunto de que forma puedo hacer esto para que las contraseñas coincidan y no tener valores nulos? – alexvargas6 May 26 '20 at 15:35
  • PARA EVITAR NULOS: Forma fácil: Sólo añade un condicional a tu método "validar", que sería algo así como: if(pass!=null && pass2!=null&&nombre!=null) {//condición cuando no es nulo.} Forma pro, pero un poquito más complicada de entender: Puedes hacerlo con Regex, que es una expresión regular, la cuál te permite utilizar diversas validaciones en un campo. Por ejemplo: que tenga una mayúscula, minúscula, números, con o sin caracteres, espacios en blanco, etc. https://stackoverflow.com/questions/3802192/regexp-java-for-password-validation – Alma H. May 26 '20 at 17:15
  • Y por último, para verificar contraseñas también hay muchas formas de hacerlo y la más sencilla es con equals, quedaría algo como: if(pass.equals(pass2)) {//Contraseñas coinciden} Aquí un ejemplo: https://es.stackoverflow.com/questions/225/c%C3%B3mo-comparar-correctamente-strings-y-objetos-en-java – Alma H. May 26 '20 at 17:19