我正在制作一个程序,无法弄清楚如何让我的扫描仪输入只能识别数字。这就是我的意思。
System.out.print(" What is the distance in feet:" );
//ask the user to input variables
Distance = keyboard.nextDouble();
我可以在距离输入后放置什么,以便允许我输出某种消息,告诉用户他们没有输入数字。
我想可能从
之类的东西开始if (Distance != double)
System.out.print ("You did not enter a valid character, please enter again."
但这不起作用。有什么建议吗?
答案 0 :(得分:2)
您需要使用Scanner#hasNextDouble()
方法来测试是否有双值读取:
// While the next input is not a double value, repeat
while (!keyboard.hasNextDouble()) {
System.out.println("Please enter a valid numeric value");
keyboard.nextLine(); // Move Scanner past the current line
}
double distance = keyboard.nextDouble();
此外,如果用户继续输入错误的输入,循环可能会无限。您可以给他一些最大数量的尝试以使其正确,然后抛出一些异常,或显示一些消息,然后执行System.exit(1);
。
答案 1 :(得分:0)
您可以使用try catch块进行此操作,例如:
System.out.print(" What is the distance in feet:" );
//ask the user to input variables
Distance = keyboard.nextDouble();
try
{
//you next code, considering a valid number
}catch (NumberFormatException ex)
{
//here u show a message ou another thing
}
希望它有所帮助^^