Programación General > Java

 Validar que el usuario solo ponga valores numericos

(1/1)

Boxcarpilot:
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 ---class Proyect {    public static void main(String args[]) throws IOException{                int Sel;              InputStreamReader menu=new InputStreamReader(System.in);      BufferedReader br= new BufferedReader(menu);      System.out.println("-----Universidad *************-----n");      System.out.println("-----Facultad *******************-----n");      System.out.println("-----Proyecto de Desarrollo de Software II-----n");      System.out.println("-----Desarrollado por:**********----nnn");      System.out.println("n-----Presione un número del 1 al 8 o el numero 0 para salir-----n");      Sel = Integer.parseInt(br.readLine());      Options obj=new Options();            do        {        System.out.println("No es un numero entre los solicitadosn");        InputStreamReader menu2=new InputStreamReader(System.in);        BufferedReader br2= new BufferedReader(menu2);        Sel = Integer.parseInt(br2.readLine());        }      while((Sel<0)||(Sel>8));                       switch(Sel)            {                case 0: System.out.println("Cerrando la aplicacion.....n");                        break;                                            case 1: obj.Prob1();                        break;                                        case 2: obj.Prob2();                        break;                                        case 3: obj.Prob3();                        break;                                                case 4: obj.Prob4();                        break;                                        case 5: obj.Prob5();                        break;                                        case 6: obj.Prob6();                        break;                                case 7: obj.Prob7();                        break;                                        case 8: obj.Prob8();                        break;                                                   }            }} 

shadow_rev:
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 ---try {  // El código para solicitar los números}catch(// La excepción que te comentaba anteriormente) {  // Mensaje de error y ejecutas nuevamente la rutina}  
Te diría cuál es la excepción que arroja, pero en este momento no lo recuerdo  :nosweat:

:suerte:

shakka:
Como dice shadow_rev , captura la excepcion NumberFormatException, he aqui un ejemplo:
http://www.javaeecoding.com/JavaBasics/ ... ample.html

arielb:
Con la clase Pattern puedes validar si es un entero y a la ves validar si contiene solo números.


--- Código: Java ---import java.util.regex.Pattern; public class Entero {     public Entero() {    }     public static boolean esEntero(String numero) {          if (Pattern.matches("^\d+$", numero)) {            return true;        }         return false;    }     public static void main(String arg[]) {        String dato = new String("343r4");                if (Entero.esEntero(dato)) {            System.out.println("Es un Número");        } else {            System.out.println("No es un número");        }     }} 

Navegación

[0] Índice de Mensajes

Ir a la versión completa