Javaでの空白を入力できないようにユーザー

SPN:

私は、ユーザーが唯一の彼の年齢を入力します。だから私は、このプログラムをしました:

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");

私はどのようにkeyb.hasNextInt()とwhileループを使用して文字列を使用してからユーザーを防ぐために、どのように空白を使用してから、あるいは彼の年齢よりも多くの入力に入ることから、彼を防ぐために発見されましたか?

たとえば、私はこのタイピングの一種「12メートル」または「12 12」を防ぎたいです

また、どのように私は、バッファ内のすべての既存のデータをクリアすることができますか?私はこれを使用しようとすると、私は無限ループに直面しています:

while(keyb.hasNext())
  keyb.next();
マイケル:

あなたの問題は、デフォルトの動作があることであるScanner区切り文字として空白を使用することです。これは、スペースが含まれています。これは、a 3 a実際には3つのトークン、ではないです。それは、あなたは新しい行に区切り文字を変更することができa 3 a、その後はfalseを返します単一のトークン、なりhasNextInt

あなたの例では最初の入力は任意の質問をする前に撮影されたので、私はまた、最初の質問を追加しました。

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");

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=183473&siteId=1