强制用户使用java scanner输入有效的数字

b0zn9rqh  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(357)

我有一个简单的代码,要求用户的年龄。一切都在正常工作,除了,如果我什么都不打,只需按回车键,我就进入了某个东西-也许是无限循环?我不确定,但我无法摆脱它。
在处理字符串时,我看到了无数关于这个主题的问题和回答,但几乎没有任何关于字符串的问题 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.");

如何强制用户输入有效数字?

tv6aics1

tv6aics11#

只要有其他输入可用,循环就需要继续(即。, 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();

相关问题