gpt4 book ai didi

java - 在输入验证期间使用 Scanner 类测试空白输入

转载 作者:行者123 更新时间:2023-12-01 05:00:33 25 4
gpt4 key购买 nike

我需要要求用户从控制台输入一个非零正整数,我将在程序中将其用作产品编号。

如果我输入任何非整数值,程序会正确进入 while 循环。

如果我输入 0 或负整数,程序会正确抛出异常(我在其他地方捕获并处理该异常)。

当我按下回车键(或行尾字符)时,程序似乎只是将控制台置于另一行。我希望它进入while循环来显示错误消息。我认为原因是 hasNextInt() 将等到标记是非行尾字符输入。

private static void validateProductNumber() throws InvalidProductNumberException { 
Scanner keyboard = new Scanner(System.in);
int number;
while(!keyboard.hasNextInt()) {
System.out.println("Number must be an integer. Try again. ");
System.out.println("Enter a new number: ");
keyboard.next();
}
number = keyboard.nextInt();
if (number <= 0)
throw new InvalidProductNumberException();
newNumber = number;
}

是否有另一种方法可以使用 Scanner 类实现输入验证,以便它在所有情况下都能正常工作?

最佳答案

您可以按如下方式更改循环:

while(true) {        
try {
System.out.println("Enter a new number: ");
//read the line and parse it
number = Integer.parseInt(keyboard.nextLine());
break; //break the loop if the input is a valid integer
} catch(Exception ex) {
//print the error message if the input is incorrect
System.out.println("Number must be an integer. Try again. ");
}
}
if (number <= 0)
//...

关于java - 在输入验证期间使用 Scanner 类测试空白输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com