Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ElRodrik en 10 Diciembre 2018, 22:57 pm



Título: Analizar tipo de datos de entrada
Publicado por: ElRodrik en 10 Diciembre 2018, 22:57 pm
Holaa, querría saber si hay alguna forma de detectar el tipo de datos que introduce un usuario en un Scanner, para pedir que vuelva a escribirlos en caso que haya introducido letras en una variable int y así no pete el programa.


Título: Re: Analizar tipo de datos de entrada
Publicado por: Serapis en 10 Diciembre 2018, 23:34 pm
Desde el teclado (por ejemplo), se pulsan teclas. Las teclas tienen un código, que en definitiva son un BYTE... Tu no puedes delimitar lo que el usuario digite, porque no hay ninguna funcionalidad que 'desactivara' (por ejemplo) las teclas del teclado, para solo estár activas las que a tu programa le intrese.

Puedes crear tus propias funciones o usar las que existen.
Como son las funciones 'HashNext... Que en definitiva avisa si el siguiente token es del (puede resolverse en el) tipo deseado...
...o incluso hacer uso de funciones más primitivas como son: Parse... (Integer.parseInt) y TryParse...,  convierten a... ó intentan convertir a...
los toquens que el usuario introdujo.

Así, por ejemplo, en vez de tomar un valor que no pudiera ser interpretado como un integer (sin un tratamiento más explícito), sería preguntarlo:

Código:
Scaner s = nuevo Scaner(in)
Si s.hashNextInt entonces
    int i= s.nextInt
Sino
   mensaje 'esperamos un valor numérico para...'
fin si


Te aconsejo ir al sitio de Sun, y ojees con cierta profundidad el objeto Scanner...
https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html


Título: Re: Analizar tipo de datos de entrada
Publicado por: ElRodrik en 11 Diciembre 2018, 09:45 am
Muchas gracias, era justo lo que necesitaba :)