Analizar tipo de datos de entrada

Iniciado por ElRodrik, 10 Diciembre 2018, 22:57 PM

0 Miembros y 1 Visitante están viendo este tema.

ElRodrik

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.

Serapis

#1
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:


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

ElRodrik

Muchas gracias, era justo lo que necesitaba :)