Autor Tema: Exception NumberFormatException Java validar campo valor vacio o incorrecto  (Leído 1909 veces)

Pepote21

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 92
    • Ver Perfil
Hola a todos.

Tengo una clase Validador en el modelo con el siguiente método:

Código: [Seleccionar]
public DefaultFormatterFactory validarDosEnteros(){
        nf=NumberFormat.getNumberInstance();
        nf.setParseIntegerOnly(true);
        nf.setMaximumIntegerDigits(2);
        nft=new NumberFormatter(nf);
        nft.setAllowsInvalid(false);
        dff=new DefaultFormatterFactory(nft);
        return dff;
    }

Tengo la clase Controlador donde tengo:

Código: [Seleccionar]
getFtfNumSala().setFormatterFactory(validador.validarDosEnteros());
listado=getObjSdao().read(); //saber los registros de la db   

El problema que tengo es que me encuentro en un formulario con un JFormattedTextField que inicialmente está vacio y cuando introduzco un dato correcto de la base de datos, todo funciona bien al pulsar el botón LEER. Pero si pulso el botón LEER con el JFormattedTextField vacio o introduciendo un dato incorrecto (o eliminado) de la base de datos me causa una Exception NumberFormatException.

Llevo ya un par de días sin poder resolverlo. A ver si alguien me echa una mano.

De antemano gracias y un saludo a todos.
« Última modificación: 12 de Marzo 2022, 18:15 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: java resolver Exception campo valor vacio o incorrecto
« Respuesta #1 en: 01 de Febrero 2022, 06:27 »
Mmmhh..
NumberFormat sirve para dar formato a los valores, o sea, para indicar como queremos que se muestren.
Pero no es un sistema de validación como tal.

Si quieres validar ese campo, en el ActionListener de ese botón LEER puedes poner validaciones antes de aceptar el valor de dicho campo y trabajar con él.
Por ejemplo

Código: [Seleccionar]
if (campo.isBlank()) //Comprobamos campo no está vacío
    JOptionPane.showMessageDialog(null, "El campo no puede estar vacío");
else {
    String texto = campo.getText();
    //Comprobamos tiene dos caracteres, para poder crear un valor de dos enteros
    if (texto.length() != 2)
        JOptionPane.showMessageDialog(null, "El campo ha de tener dos caracteres");
    else {
        try {
            //Intentamos convertir el valor del campo a un Integer, si falla, se lanzará excepción
            Integer valor = Integer.parseInt(texto);
            //El parseo ha funcionado, el valor es correcto.
            /*
            * Aquí vendría el código para trabajar con ese valor ya validado....
            */
        }
        catch(NumberFormatException ex) { //Aquí capturamos excepción para cuando falle el parseo a Integer
            JOptionPane.showMessageDialog(null, "El campo ha de tener un valor numérico");
        }
    }
}

Como digo, es un ejemplo. Intenta adaptarlo a tu código y a las necesidades de tu programa.
Saludos.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Pepote21

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 92
    • Ver Perfil
Re: java resolver Exception campo valor vacio o incorrecto
« Respuesta #2 en: 05 de Febrero 2022, 19:55 »
Gracias Kabuto. No había visto el correo hasta ahora. Mi problema era debido a que no había comprobado listado=getObjSdao().read(); .Esto me funcionaba en su clase donde lo había comprobado pero no en esta, de ahí mi error de primer curso. Me han ayudado porque como la comprobación inicial funcionaba me había cegado en otra parte del código.

Agradezco tu solución que después comprobaré, pero muestro la que he hecho en este momento, que es esta:

Código: [Seleccionar]
listado=getObjSdao().read();
for(int i=0;i<listado.size();i++){
                        sala=(Sala) listado.get(i);
                        if(sala.getNumSala()==numRegistro){
                            break;
                        }                           
                    } 
if(sala.getNumSala()==numRegistro){
                loadFormulario(sala);
}else{
                JOptionPane.showMessageDialog(getObjM(), "No existe registro con el valor introducido.");                       
                }

Un saludo a todos.
« Última modificación: 12 de Marzo 2022, 18:15 por Ogramar »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".