Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Duda con excepciones

Estas en el tema de Duda con excepciones en el foro de Java en Foros del Web. Buenas, me han pedido este ejercicio pero no se si realmente tengo claro que es lo que tengo que hacer. Modificar el método readInt para ...
  #1 (permalink)  
Antiguo 20/11/2015, 04:21
 
Fecha de Ingreso: marzo-2013
Mensajes: 51
Antigüedad: 11 años, 8 meses
Puntos: 2
Duda con excepciones

Buenas, me han pedido este ejercicio pero no se si realmente tengo claro que es lo que tengo que hacer.

Modificar el método readInt para que propague una excepción del tipo
NumberFormatException, de tal forma que se le indique al usuario que debe
introducir un número válido y se vuelva a leer la entrada.

El método es:

Código Java:
Ver original
  1. public static int readInt() throws NumberFormatException{
  2.         return Integer.parseInt(readString());          
  3. }

Se que en este caso para propagar la excepción se utiliza throws NumberFormatException en la cabecera, pero la duda es:

¿Tengo que utilizar el bloque try-catch en la parte del código donde hago la llamada a ese método? Asi:

Código Java:
Ver original
  1. do {
  2.                 try{
  3.                     System.out.println("Introduce un número: ");
  4.                     System.out.println("El numero que hay que adivinar es: " + nAdivinar);
  5.                     nIntroducido = MyInput.readInt();
  6.                 }catch(NumberFormatException nfe){
  7.                     System.out.println("Hay que introducir un caracter numérico");
  8.                 }
  9.      
  10.             } while (validaNumero(nIntroducido) == false);

¿Estaría correcto el código así de acuerdo a lo que me piden en el ejercicio?

Gracias.
  #2 (permalink)  
Antiguo 20/11/2015, 04:29
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Duda con excepciones

Perfecto. Es exactamente lo que te piden.

La unica mejora que le haria seria incluir un continue cuando se captura la excepcion para saltarte la validacion "validaNumero".

Código Java:
Ver original
  1.         System.out.println("Hay que introducir un caracter numérico");
  2.          continue;
  3. }

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 20/11/2015, 04:49
 
Fecha de Ingreso: marzo-2013
Mensajes: 51
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: Duda con excepciones

De acuerdo y gracias, aunque realmente no me interesa saltarme el validaNumero ya que ese método se va redefiniendo en diferentes clases y lo que hace es comprobar si el número que introduzco esta entre 0 y 10, si es par o si es impar dependiendo de la instancia de la clase que ejecuto a través de un menú.

Para que vuelva a pedir el número si no se introduce un número lo he solucionado con una variable booleana y añadiendo otra condición al while. Dejo el código por si a alguien le sirviera.

Código Java:
Ver original
  1. do {
  2.                 try{
  3.                     System.out.println("Introduce un número: ");
  4.                     System.out.println("El numero que hay que adivinar es: " + nAdivinar);
  5.                     nIntroducido = MyInput.readInt();
  6.                     esNumero = true;
  7.                 }catch(NumberFormatException nfe){
  8.                     System.out.println("Hay que introducir un caracter numérico");
  9.                     esNumero = false;
  10.                 }
  11.             } while (validaNumero(nIntroducido) == false || esNumero == false);
  #4 (permalink)  
Antiguo 20/11/2015, 07:00
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Duda con excepciones

La excepcion se produce cuando lo introducido no es un numero, por lo que en esos casos no tiene ningun sentido validar si es par o impar.


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: excepciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:53.