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

Corregir error en entrada de datos.

Estas en el tema de Corregir error en entrada de datos. en el foro de Java en Foros del Web. Estoy haciendo un ejercicio de Java por consola con un array de doubles, pero al introducir un dato en dicho array, si éste es un ...
  #1 (permalink)  
Antiguo 15/04/2017, 22:41
 
Fecha de Ingreso: noviembre-2009
Mensajes: 278
Antigüedad: 15 años
Puntos: 2
Corregir error en entrada de datos.

Estoy haciendo un ejercicio de Java por consola con un array de doubles, pero al introducir un dato en dicho array, si éste es un caracter no numérico el programa se rompe... ¿Cómo se corrige esto?.


double[] distancia = new double [3];
...
for (int x=0; x < distancia.length; x++) {
System.out.println("Introduzca la distancia a recorrer...:");
distancia[x] = entrada.real();

He intentado construir una condición if para cuando los datos de ingreso no sean numéricos pero he fracasado.

Última edición por quad22; 16/04/2017 a las 15:59
  #2 (permalink)  
Antiguo 17/04/2017, 03:34
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: Corregir error en entrada de datos.

Crea un método para pedir la entrada del teclado y otro para procesarlo.

Procesa en un bloque try/catch tratando de convertir la entrada a numérica.

Si se te va por el catch vuelves a llamar al método de entrada.

Si se te mantiene en el try procesas la entrada como desees.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 19/04/2017, 06:28
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años, 1 mes
Puntos: 7
Respuesta: Corregir error en entrada de datos.

Puedes hacer una validación sencilla con expresiones regulares, por ejemplo:

Código Java:
Ver original
  1. String valorCapturado = "12345.6789";
  2.        
  3.         Pattern patron = Pattern.compile("\\d+(.\\d+)?");
  4.         boolean permitido = patron.matcher(valorCapturado).matches();
  5.        
  6.         System.out.println(valorCapturado + " " +permitido);

La expresión regular "\\d+(.\\d+)?" validará que pases un valor decimal, el cual también podrá ser entero. Si quieres usar coma (,) en lugar de punto (.) para separar la parte entera de la parte decimal cambialo en la expresión. Te recomiendo que leas algo de expresiones regulares, son muy útiles.
__________________
El último TipdaR
  #4 (permalink)  
Antiguo 21/04/2017, 13:33
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: Corregir error en entrada de datos.

Buenas,

El programa se rompe porque el componente "entrada" espera un numero real.

entrada.real();

Si este metodo lanza una excepcion al intoducir letras, seria posible capturarla como propone @Fuzzylog, pero sin saber lo que hace es imposible asegurarlo.


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

Etiquetas: corregir, entrada
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 20:29.