Evitar la entrada de usuario de espacio en blanco en Java

SPN:

Quiero que el usuario sólo para entrar en su edad. Así que hice este programa:

Scanner keyb = new Scanner(System.in);  
int age;

while(!keyb.hasNextInt())
{
    keyb.next();
    System.out.println("How old are you ?");
}

age = keyb.nextInt();
System.out.println("you are" + age + "years old");

He encontrado la manera de evitar que usuarios puedan usar cadena utilizando el bucle while con keyb.hasNextInt (), pero la forma de evitar que el uso del espacio en blanco o la entrada de más de entrada que su edad?

Por ejemplo, yo quiero evitar este tipo de escribir "12 m" o "12 12"

Además, ¿cómo puedo borrar todos los datos existentes en la memoria intermedia? Estoy frente a un bucle infinito cuando trato de usar esto:

while(keyb.hasNext())
  keyb.next();
Miguel :

Su problema es que el comportamiento predeterminado de Scanneres utilizar cualquier espacio en blanco como delimitador. Esto incluye espacios. Esto significa que a 3 aes en realidad tres fichas, no uno. Se puede cambiar el delimitador para una nueva línea de manera que a 3 ase convierte en una sola expresión, que a su vez devolver false para hasNextInt.

También he añadido una pregunta inicial, ya que en el ejemplo de la primera entrada fue tomada antes de hacer ninguna pregunta.

Scanner keyb = new Scanner(System.in);
keyb.useDelimiter("\n"); // You can try System.lineSeparator() but it didn't work in IDEA
int age;

System.out.println("How old are you?");
while(!keyb.hasNextInt())
{
    keyb.next();
    System.out.println("No really. How old are you?");
}

age = keyb.nextInt();
System.out.println("You are " + age + " years old");

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=183476&siteId=1
Recomendado
Clasificación