elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con esta funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con esta funcion  (Leído 3,741 veces)
nico56

Desconectado Desconectado

Mensajes: 246


Ver Perfil
Ayuda con esta funcion
« en: 8 Julio 2010, 21:23 pm »

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:

Código
  1. public static int pedir_entero(String s)
  2. {
  3. int aux = 0;
  4. boolean correct=false;
  5. Scanner stdin=new Scanner(System.in);
  6.  
  7. while(correct == false)
  8. {
  9. try
  10. {
  11. System.out.print(s);
  12. aux=stdin.nextInt();
  13. stdin.next();
  14. correct=true;
  15.    }
  16. catch(InputMismatchException e)
  17. {
  18. System.out.println("ERROR," + s);
  19. }
  20. }
  21.  
  22. return aux;
  23. }
  24.  

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 Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Ayuda con esta funcion
« Respuesta #1 en: 8 Julio 2010, 21:55 pm »

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:

Código
  1. public static int pedir_entero(String s)
  2. {
  3. int aux = 0;
  4. boolean correct=false;
  5. Scanner stdin=new Scanner(System.in);
  6.  
  7.                     try{
  8. while(correct == false)
  9. {
  10.  
  11. System.out.print(s);
  12. aux=stdin.nextInt();
  13. stdin.next();
  14. correct=true;
  15.    }
  16.  
  17. }
  18.                 catch(InputMismatchException e)
  19. {
  20. System.err.println("Error!");
  21. }
  22. return aux;
  23. }

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 Desconectado

Mensajes: 1


Ver Perfil
Re: Ayuda con esta funcion
« Respuesta #2 en: 8 Julio 2010, 22:11 pm »

Hola a to@s, llevo un tiempo registrado aunque no suelo postear.
He modificado un poco tu codigo pero creo que funciona:

Código:
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 Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Ayuda con esta funcion
« Respuesta #3 en: 8 Julio 2010, 22:20 pm »

Hola a to@s, llevo un tiempo registrado aunque no suelo postear.
He modificado un poco tu codigo pero creo que funciona:

Código:
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:
Código:
[code=java]

Saludos[/code]
En línea

nico56

Desconectado Desconectado

Mensajes: 246


Ver Perfil
Re: Ayuda con esta funcion
« Respuesta #4 en: 8 Julio 2010, 23:39 pm »

Si me habia equivocado, la idea era volver a pedirlo si lo insertaba mal.
En línea

Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


Ver Perfil WWW
Re: Ayuda con esta funcion
« Respuesta #5 en: 9 Julio 2010, 00:02 am »

Código
  1. public static int pedir_entero()
  2. {
  3. int aux = 0;
  4. Scanner stdin=new Scanner(System.in);
  5. try{
  6. System.out.println("N: ");
  7. aux=Integer.parseInt(stdin.next());
  8. }catch (Exception e) {
  9. System.err.println(e.getMessage());
  10. pedir_entero();
  11. }
  12. return aux;
  13. }
  14.  

Código
  1. public static int pedir_entero1()
  2. {
  3. int aux = 0;
  4. Scanner stdin=new Scanner(System.in);
  5. do{
  6. try{
  7. System.out.println("N: ");
  8. aux=Integer.parseInt(stdin.next());
  9. break;
  10. }catch (Exception e) {
  11. System.err.println(e.getMessage());
  12. continue;
  13. }
  14. }while(true);
  15. return aux;
  16. }
En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Ayuda con esta funcion
« Respuesta #6 en: 9 Julio 2010, 04:38 am »

Código
  1. package entero;
  2. import java.util.Scanner;
  3. public class Main {
  4.    public static void main(String[] args) {
  5.        String res="";
  6.        do
  7.        {
  8.            Scanner leer=new Scanner(System.in);
  9.            res = leer.next();
  10.        }while(!esNumero(res));
  11.  
  12.        Integer resul = Integer.parseInt(res)+ 24;
  13.        System.out.println("Numero: " + res + " sumado + 24 = " + resul);
  14.    }
  15.    public static boolean esNumero(String valor)
  16.    {
  17.        try
  18.        {
  19.            Integer.parseInt(valor);
  20.            return true;
  21.        }
  22.        catch(NumberFormatException error)
  23.        {
  24.            System.out.println("No es numero, error: " + error);
  25.            return false;
  26.        }
  27.    }
  28. }
  29.  
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 Desconectado

Mensajes: 37



Ver Perfil
Re: Ayuda con esta funcion
« Respuesta #7 en: 13 Julio 2010, 01:35 am »

Prueba CON ESTE......

Código
  1. import java.io.*;
  2.  
  3. public class Pedirnumero implements Serializable{
  4.  
  5. public static void main(String a[]){
  6.  
  7. String dato = "";
  8.  
  9. try{
  10.  do{
  11.  
  12. System.out.print("Digite numero: "); dato = rs.readLine();
  13.  
  14.  
  15.  }while(pedirnumero(dato));
  16.  
  17.  System.out.println("DATO CORRECTO : "+dato);
  18.  
  19.  
  20. }catch(Exception e){
  21.  
  22.  System.out.println("Error en "+e.getMessage());
  23.  
  24.  }
  25. }//fin main
  26.  
  27.  
  28. public static boolean pedirnumero(String dato){
  29.  
  30. try{
  31.  
  32.     Integer.parseInt(dato);
  33.  
  34.     return false;
  35.  
  36. }catch(Exception e){
  37.     System.out.println("Dato no permitido: "+dato);    
  38.     return true;
  39. }
  40.  
  41. }
  42.  
  43. }

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.....!!!!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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,407 Último mensaje 19 Febrero 2011, 01:49 am
por Littlehorse
ayuda con esta funcion
Programación C/C++
Fer995 2 2,387 Último mensaje 6 Marzo 2011, 01:42 am
por Akai
Ayuda con esta funcion « 1 2 »
Programación C/C++
gold oscar 16 6,440 Último mensaje 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,222 Último mensaje 12 Marzo 2018, 19:05 pm
por srWhiteSkull
Ayuda con esta función en C
Programación C/C++
GominaTilted 1 2,437 Último mensaje 4 Abril 2020, 21:41 pm
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines