• Lunes 18 de Noviembre de 2024, 04:17

Autor Tema:  Validar que el usuario solo ponga valores numericos  (Leído 1886 veces)

Boxcarpilot

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Validar que el usuario solo ponga valores numericos
« en: Lunes 13 de Octubre de 2008, 23:19 »
0
Estoy haciendo un programa mediante switch, es un menu del 1 al 8.
Pero cuando coloco algun caracter(simbolos, letras mayusculas y minisculas) marca error....

Que metodo debo usar para q sea lo q sea q el ususario ponga, convertirlo a su equivalente numerico para luego comparar si esta entre 1 y 8??

Osea el punto esq quiero leer un numero sin importar que se introduzcan letras o caracteres
Gracias

Edito, dejo esto para q vean (es POO)

Código: Text
  1. class Proyect {
  2.     public static void main(String args[]) throws IOException{
  3.        
  4.         int Sel;
  5.        
  6.       InputStreamReader menu=new InputStreamReader(System.in);
  7.       BufferedReader br= new BufferedReader(menu);
  8.       System.out.println("-----Universidad *************-----n");
  9.       System.out.println("-----Facultad *******************-----n");
  10.       System.out.println("-----Proyecto de Desarrollo de Software II-----n");
  11.       System.out.println("-----Desarrollado por:**********----nnn");
  12.       System.out.println("n-----Presione un número del 1 al 8 o el numero 0 para salir-----n");
  13.       Sel = Integer.parseInt(br.readLine());
  14.       Options obj=new Options();
  15.      
  16.       do
  17.         {
  18.         System.out.println("No es un numero entre los solicitadosn");
  19.         InputStreamReader menu2=new InputStreamReader(System.in);
  20.         BufferedReader br2= new BufferedReader(menu2);
  21.         Sel = Integer.parseInt(br2.readLine());
  22.         }
  23.       while((Sel<0)||(Sel>8));   
  24.        
  25.             switch(Sel)
  26.             {
  27.                 case 0: System.out.println("Cerrando la aplicacion.....n");
  28.                         break;
  29.                            
  30.                 case 1: obj.Prob1();
  31.                         break;
  32.                        
  33.                 case 2: obj.Prob2();
  34.                         break;
  35.                        
  36.                 case 3: obj.Prob3();
  37.                         break;        
  38.                        
  39.                 case 4: obj.Prob4();
  40.                         break;
  41.                        
  42.                 case 5: obj.Prob5();
  43.                         break;
  44.                        
  45.                 case 6: obj.Prob6();
  46.                         break;
  47.                
  48.                 case 7: obj.Prob7();
  49.                         break;
  50.                        
  51.                 case 8: obj.Prob8();
  52.                         break;                                      
  53.             }
  54.        
  55.     }
  56. }
  57.  

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Validar que el usuario solo ponga valores numericos
« Respuesta #1 en: Martes 14 de Octubre de 2008, 16:53 »
0
Primero mira que clase de excepción te tira cuando le metes un caracter distinto a un número, y lo capturas con un try - catch:

Código: Text
  1. try {
  2.   // El código para solicitar los números
  3. }
  4. catch(// La excepción que te comentaba anteriormente) {
  5.   // Mensaje de error y ejecutas nuevamente la rutina
  6. }
  7.  
  8.  

Te diría cuál es la excepción que arroja, pero en este momento no lo recuerdo  :nosweat:

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Validar que el usuario solo ponga valores numericos
« Respuesta #2 en: Martes 14 de Octubre de 2008, 17:05 »
0
Como dice shadow_rev , captura la excepcion NumberFormatException, he aqui un ejemplo:
http://www.javaeecoding.com/JavaBasics/ ... ample.html

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Validar que el usuario solo ponga valores numericos
« Respuesta #3 en: Martes 14 de Octubre de 2008, 17:20 »
0
Con la clase Pattern puedes validar si es un entero y a la ves validar si contiene solo números.

Código: Java
  1. import java.util.regex.Pattern;
  2.  
  3. public class Entero {
  4.  
  5.     public Entero() {
  6.     }
  7.  
  8.     public static boolean esEntero(String numero) {
  9.  
  10.  
  11.         if (Pattern.matches("^\d+$", numero)) {
  12.             return true;
  13.         }
  14.  
  15.         return false;
  16.     }
  17.  
  18.     public static void main(String arg[]) {
  19.         String dato = new String("343r4");
  20.        
  21.         if (Entero.esEntero(dato)) {
  22.             System.out.println("Es un Número");
  23.         } else {
  24.             System.out.println("No es un número");
  25.         }
  26.  
  27.     }
  28. }
  29.  
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com