Foro de elhacker.net

Programación => Java => Mensaje iniciado por: JonaLamper en 3 Enero 2015, 16:43 pm



Título: Comprobar si una variable es numérica
Publicado por: JonaLamper en 3 Enero 2015, 16:43 pm
Hola,

Tengo un bucle do while del estilo (en pseudocódigo):


do {
   System.out.print("Introduzca la columna: ");
   Recojo la columna introducida en una variable llamada recoger



   Por aquí abajo habrá algo en plan System.out.print("Debe introducir solo números enteros.")

} while (recoger == cualquier cosa que no sea un número);

Así que como veis, necesito entrar en un do while y hasta que el usuario no introduzca un número, no puede salir. Mi duda viene en que no sé cómo decir en el while 'Si recoger es cualquier cosa que no sea un número', o sea, ¿cómo podría hacer esa comparación?


Título: Re: Comprobar si una variable es numérica
Publicado por: Flamer en 3 Enero 2015, 17:14 pm
aver si entendi no saldras del bucle hasta que el usuario inserte un dato numerico y no sabes lo que usuario inserta bueno..

Declara la variable como numerica y cuando inserte algo que nosea numeros marcara error

saludos Flamer


Título: Re: Comprobar si una variable es numérica
Publicado por: JonaLamper en 3 Enero 2015, 17:51 pm
¿Podrías poner un ejemplo?


Título: Re: Comprobar si una variable es numérica
Publicado por: WHK en 5 Enero 2015, 15:19 pm
Así?

Código
  1. import java.util.Scanner;
  2.  
  3. public class JonaLamper{
  4.  
  5.    public JonaLamper() {
  6.        /* Constructor */
  7.  
  8.        Integer respuesta = this.preguntarColumna();
  9.        // ...
  10.  
  11.    }
  12.  
  13.    public Integer preguntarColumna(){
  14.        Scanner sc = new Scanner(System.in);
  15.        String recoger;
  16.        System.out.print("Introduzca la columna: ");
  17.        recoger = sc.nextLine().trim();
  18.  
  19.        if(recoger.matches("-?\\d+(\\.\\d+)?")){
  20.            try {
  21.                return Integer.parseInt(recoger);
  22.  
  23.            }catch(Exception e){
  24.                System.out.print("Debe introducir solo números enteros.");
  25.                return this.preguntarColumna();
  26.            }
  27.        }else{
  28.            System.out.print("Debe introducir solo números enteros.");
  29.            return this.preguntarColumna();
  30.        }
  31.    }
  32. }
  33.  

Ahora, si yo fuera tu dentro de la misma función de preguntar columna verificaría antes de retornar el integer que si realmente el id de columna existe, así no tienes que estar controlando la integridad de datos cada ves que lo uses y si no existe debería decir que debe introducir un número de columna válido.


Título: Re: Comprobar si una variable es numérica
Publicado por: JonaLamper en 5 Enero 2015, 23:12 pm
He intentado arreglarlo pero nada. Creo que será más fácil si ves lo que tengo:

Código
  1. } else if(comando.equalsIgnoreCase("PONER")) {
  2.  
  3. do {
  4. try{
  5. System.out.print("Introduzca la columna: ");
  6. c = this.in.nextInt();
  7. this.in.nextLine();
  8. continuar = false;
  9.  
  10. } catch(InputMismatchException intInputMismatchException){
  11. System.err.printf("\n Error: %s\n", intInputMismatchException);
  12. System.out.println("Se deben introducir solo numeros enteros");
  13. System.out.println();
  14. this.in.next();
  15.  
  16. }
  17. //Esto hay que cambiarlo!!
  18. } while (continuar == true);

Y al ejecutarlo, dentro del programa, el resultado es este:


(http://nsae02.casimages.net/img/2015/01/05/mini_150105111222323628.png) (http://www.casimages.es/i/150105111222323628.png.html)


Lo he arreglado, pero me salta por pantalla el mensaje de java.util.InputMismatchException. Igualmente, hasta la siguiente práctica no era necesario controlar las excepciones, así que si no quieres comerte mucho la cabeza tampoco pasa nada, lo puedo dejar así.

Saludos.

PD: el controlar que la columna introducida esté dentro del rango posible se hace más abajo, cuando se crea un objeto y se procede a insertar la ficha en la respectiva columna  ;D


Título: Re: Comprobar si una variable es numérica
Publicado por: WHK en 8 Enero 2015, 04:03 am
Prueba con    
System.err.printf("\n Error: %s\n", intInputMismatchException.getMessage());


Título: Re: Comprobar si una variable es numérica
Publicado por: JonaLamper en 8 Enero 2015, 21:38 pm
Ahora solo aparece la palabra null.

Lo voy a dejar así, muchas gracias.