使用 Java 扫描仪强制用户输入有效号码

Force user to enter a valid number using the Java scanner

我有一个简单的代码可以询问用户的年龄。一切都按预期工作,除了,如果我什么都不输入,只需按回车键,我就会进入某些东西——也许是无限循环?我不确定,但我无法摆脱它。

我在处理字符串时看到了无数关于这个主题的问题和回复,但几乎没有关于 byte(或 int)的问题和回复。

这是我的代码:

    //App #2: Age

    System.out.print("Enter your Age: ");

    byte age = scanner.nextByte();

    while (!scanner.hasNext()) {
        System.out.println("Please enter a valid number.");
        byte test = scanner.nextByte();
    }

    if (age > 16) {
        applicant.age = age;
        System.out.println(age);
    }
    else
        System.out.println("You must be at least 17 years old to obtain a microloan.");

如何强制用户输入有效号码?

只要有额外的输入可用(即 scanner.hasNext())但它不是有效字节(即 !scanner.hashNextByte()),您的循环就需要继续。您还应该记住使用 (next()) 任何无效字符串,以便可以评估下一个输入的字符串:

while (scanner.hasNext() && !scanner.hasNextByte()) {
    System.out.println("Please enter a valid number.");
    scanner.next(); // Discard the invalid string
}

// Now we have a valid byte, read it:
byte age = scanner.nextByte();