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

[SOLUCIONADO] duda con try-catch

Estas en el tema de duda con try-catch en el foro de Java en Foros del Web. Estimados, estoy tratando de hacer una validacion, necesito que si se escriba una letra vuelva a pedir el numero, pero no se porque no me ...
  #1 (permalink)  
Antiguo 20/06/2014, 09:07
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
duda con try-catch

Estimados, estoy tratando de hacer una validacion, necesito que si se escriba una letra vuelva a pedir el numero, pero no se porque no me deja, y al agregar una letra queda en un loop infinito

Código:
package prueba;

import java.util.Scanner;

public class Prueba {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        double num1,num2; 
        int n;
        boolean ok = false;
        Tokens nume = new Tokens();

        do{ 
           
            try{  
                System.out.print("Ingrese número de Inicio: ");
                num1=s.nextDouble();
                n=nume.entero(num1);
               
                System.out.print("\nIngrese número de Término: ");
                num2= s.nextDouble();
                n=nume.entero(num2);
                             
                if (n==1 || n==0){
                    ok = false;
                    break;
                }
            }catch(Exception ex){
                ok = true;
                System.out.println("Valores formato Incorrecto");                 
                  
            }
            
        }while(ok == true);
    }    
}
  #2 (permalink)  
Antiguo 20/06/2014, 09:55
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: duda con try-catch

Eso es un problema por leer los números con nextDouble.

http://docs.oracle.com/javase/6/docs...l/Scanner.html

Cita:
When a scanner throws an InputMismatchException, the scanner will not pass the token that caused the exception, so that it may be retrieved or skipped via some other method.
Cuando introduces un caracter y falla en su conversión a número, el caracter continúa en buffer, por lo que cuando vuelves al origen del do, por no estar vacío el buffer el nextDouble se ejecuta automáticamente leyendo el valor erróneo otra vez.

Libera el buffer en caso de error

Cita:
catch(Exception ex){
ok = true;
s.nextLine();
System.out.println("Valores formato Incorrecto");

}
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 20/06/2014, 14:34
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: duda con try-catch

muchas gracias estimado, nunca pense que seria algo tan simple!

Etiquetas: string, try-catch, valor
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 23:51.