0

我正在制作一个程序,但无法弄清楚如何让我的扫描仪输入只识别数字。这就是我的意思。

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." 

但这不起作用。有什么建议么?

4

2 回答 2

2

您需要使用Scanner#hasNextDouble()方法来测试,是否有读取的double值:

// 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);.

于 2013-09-27T19:58:29.707 回答
0

You can make this using a try cacth block, somethinh like:

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
}

Hope it helps ^^

于 2013-09-27T20:18:20.087 回答