Autor
|
Tema: Ayuda con esta funcion (Leído 4,061 veces)
|
nico56
Desconectado
Mensajes: 246
|
Hola que tal, estoy haciendo una funcion para pedir un numero entero, quiero que si el usuario lo inserta mal que lo vuelva a pedir, para ello hice esta funcion: public static int pedir_entero (String s ) { int aux = 0; boolean correct=false; Scanner stdin =new Scanner (System. in); while(correct == false) { try { aux=stdin.nextInt(); stdin.next(); correct=true; } catch(InputMismatchException e) { System. out. println("ERROR," + s ); } } return aux; }
Cuando la pruebo poniendo una letra, se cuelga el programa mostrandos repetitivamente e infinitamente esta sentencia: "System.out.println("ERROR," + s);" Que puede ser? Desde ya gracias y saludos.
|
|
« Última modificación: 8 Julio 2010, 21:52 pm por Debci »
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Mira fijate que mete el catch dentro del while, por eso cuando hay un error lanzas la captura de exepcion indefinidamente, para que no ocurra, deberia ser algo asi: public static int pedir_entero (String s ) { int aux = 0; boolean correct=false; Scanner stdin =new Scanner (System. in); try{ while(correct == false) { aux=stdin.nextInt(); stdin.next(); correct=true; } } catch(InputMismatchException e) { } return aux; }
Como puedes ver he metido el catch fuera, no he probado el codigo, pues lo hice rapido aqui mismo, si no va dimelo y te lo pruebo, pero en principio no ha de haber problemas. Saludos
|
|
|
En línea
|
|
|
|
Serghinio12
Desconectado
Mensajes: 1
|
Hola a to@s, llevo un tiempo registrado aunque no suelo postear. He modificado un poco tu codigo pero creo que funciona: public static int pedir_entero(String s) { int aux = 0; boolean correct = false; Scanner stdin = new Scanner(System.in); while (correct == false) { try { System.out.print(s); aux = stdin.nextInt(); correct = true; } catch (InputMismatchException e) { System.out.println("ERROR," + s); stdin.next(); } }
return aux; } Y debci me parece que tu codigo no te lo vuelve a pedir si es erroneo.
|
|
« Última modificación: 8 Julio 2010, 22:15 pm por Serghinio12 »
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Hola a to@s, llevo un tiempo registrado aunque no suelo postear. He modificado un poco tu codigo pero creo que funciona: public static int pedir_entero(String s) { int aux = 0; boolean correct = false; Scanner stdin = new Scanner(System.in); while (correct == false) { try { System.out.print(s); aux = stdin.nextInt(); correct = true; } catch (InputMismatchException e) { System.out.println("ERROR," + s); stdin.next(); } }
return aux; } Y debci me parece que tu codigo no te lo vuelve a pedir si es erroneo. Claro que no, el no ha pedido tal caracteristica, por cierto poned las tags de codigo en java con: Saludos[/code]
|
|
|
En línea
|
|
|
|
nico56
Desconectado
Mensajes: 246
|
Si me habia equivocado, la idea era volver a pedirlo si lo insertaba mal.
|
|
|
En línea
|
|
|
|
Leyer
Desconectado
Mensajes: 786
leyer@elhacker.net
|
public static int pedir_entero() { int aux = 0; Scanner stdin =new Scanner (System. in); try{ aux =Integer. parseInt(stdin. next()); System. err. println(e. getMessage()); pedir_entero(); } return aux; }
public static int pedir_entero1() { int aux = 0; Scanner stdin =new Scanner (System. in); do{ try{ aux =Integer. parseInt(stdin. next()); break; System. err. println(e. getMessage()); continue; } }while(true); return aux; }
|
|
|
En línea
|
|
|
|
43H4FH44H45H4CH49H56H45H
Wiki
Desconectado
Mensajes: 502
|
package entero; import java.util.Scanner; public class Main { public static void main (String[] args ) { do { Scanner leer =new Scanner (System. in); res = leer.next(); }while(!esNumero(res)); System. out. println("Numero: " + res + " sumado + 24 = " + resul ); } public static boolean esNumero (String valor ) { try { return true; } { System. out. println("No es numero, error: " + error ); return false; } } }
|
|
|
En línea
|
-R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
joseprox
Desconectado
Mensajes: 37
|
Prueba CON ESTE...... import java.io.*; public static void main (String a []){ try{ do{ System. out. print("Digite numero: "); dato = rs. readLine(); }while(pedirnumero(dato)); System. out. println("DATO CORRECTO : "+dato ); System. out. println("Error en "+e. getMessage()); } }//fin main public static boolean pedirnumero (String dato ){ try{ return false; System. out. println("Dato no permitido: "+dato ); return true; } } }
Leyer: Utilizar las quotes de codigo java de GeShi para la proxima
|
|
« Última modificación: 13 Julio 2010, 01:49 am por LEYER »
|
En línea
|
Toda persona tiene derecho a cometer errores... la verdad es q solo ella es RESPONSABLE DE LO QUE HACE.....!!!!!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[?][C]Que diferencia hay en *-& en esta funcion pues eso
Programación C/C++
|
anonimo12121
|
9
|
3,750
|
19 Febrero 2011, 01:49 am
por Littlehorse
|
|
|
ayuda con esta funcion
Programación C/C++
|
Fer995
|
2
|
2,603
|
6 Marzo 2011, 01:42 am
por Akai
|
|
|
Ayuda con esta funcion
« 1 2 »
Programación C/C++
|
gold oscar
|
16
|
7,155
|
3 Noviembre 2016, 21:30 pm
por engel lex
|
|
|
[Ayuda] Por que no anda esta función en Haskell
Programación General
|
PabloPbl
|
1
|
2,451
|
12 Marzo 2018, 19:05 pm
por srWhiteSkull
|
|
|
Ayuda con esta función en C
Programación C/C++
|
GominaTilted
|
1
|
2,797
|
4 Abril 2020, 21:41 pm
por fary
|
|