Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: andrex.125 en 25 Septiembre 2013, 16:41 PM

Título: problema implementacion try... catch
Publicado por: andrex.125 en 25 Septiembre 2013, 16:41 PM
hola, estoy haciendo un método para registrar un músico en una posición de un vector,  hasta aquí todo bien, ahora tengo que implementar el try catch y lo hice de esta forma :

registrar músico
Código (java) [Seleccionar]

 static void registarMusico(Musico[] vector) {
       try {
         
       String cedula = JOptionPane.showInputDialog("Ingrese cedula ");
       String nombre = JOptionPane.showInputDialog("Ingrese Nombre: ");
       double salario = Double.parseDouble(JOptionPane.showInputDialog(null, "Asignar salario:"));
       String instrumento = JOptionPane.showInputDialog("Ingrese instrumento: ");
       String telefono = JOptionPane.showInputDialog("Ingrese telefono: ");
     
       vector[posM] = new Musico(instrumento, cedula, nombre, salario);
       posM++;
       
       }catch (NumberFormatException nfe) {
               JOptionPane.showMessageDialog(null, "El formato de número es erróneo");
           
       
   }
       
   }


Lo que no me gusta es que cada vez que el usuario se equivoca se lanza la excepción pero se devuelve hasta el principio y hay que comenzar de nuevo a llenar todos los datos, quisiera saber como podría hacer para que no se devuelva a pedir todos los datos, que solo pida en el que se equivoco y siga su ejecución.

Gracias.
Título: Re: problema implementacion try... catch
Publicado por: 1mpuls0 en 25 Septiembre 2013, 16:57 PM
1. Coloca la excepción solo donde podría producirse un error. En este caso sería en la variable salario.
2. Utiliza un do-while para controlar el bloque del try-catch. Cada vez que se produzca la excepción volverá a pedir que ingrese unicamente el salario. Esto se puede hacer implementando una bandera booleana y utilizarla como condición en el do-while.

Edito:
Por cierto la asignación al vector tiene que ser una vez capturado todos los valores correctamente.
Título: Re: problema implementacion try... catch
Publicado por: andrex.125 en 25 Septiembre 2013, 17:03 PM
Cita de: Darhius en 25 Septiembre 2013, 16:57 PM
1. Coloca la excepción solo donde podría producirse un error. En este caso sería en la variable salario.
2. Utiliza un do-while para controlar el bloque del try-catch. Cada vez que se produzca la excepción volverá a pedir que ingrese unicamente el salario. Esto se puede hacer implementando una bandera booleana y utilizarla como condición en el do-while.

gracias por tu respuesta.
me puedes ayudar con una excepción, para verificar los otros datos osea para que en los de tipo String solo se ingrese caracteres de la a-z, dado que en un String se puede ingresar cualquier carácter. 

Gracias.
Título: Re: problema implementacion try... catch
Publicado por: 1mpuls0 en 25 Septiembre 2013, 17:21 PM
Tiene que ser forzosamente excepciones? xD

Porque puedes hacerlo con expresiones regulares.

Código (java) [Seleccionar]

/*Autor: 1mpuls0*/

public boolean isAlpha(String value) {
       try {
           if(!value.isEmpty()) {
               Pattern p = Pattern.compile("^[a-zA-Z]+$");
               Matcher m = p.matcher(value);
               if(m.find()) {
                   return true;
               } else {
                   return false;
               }
           } else {
               return false;
           }
       } catch(NullPointerException npe) {
           System.out.println(npe.getMessage());
           return false;
       } catch(PatternSyntaxException pse) {
           System.out.println(pse.getMessage());
           return false;
       }
   }


El método isAlpha retorna true si el valor solo contiene letras.