使用 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();
我有一个简单的代码可以询问用户的年龄。一切都按预期工作,除了,如果我什么都不输入,只需按回车键,我就会进入某些东西——也许是无限循环?我不确定,但我无法摆脱它。
我在处理字符串时看到了无数关于这个主题的问题和回复,但几乎没有关于 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();