JAVA:如何将Enter键检测为输入验证无效的输入

时间:2018-09-05 02:18:09

标签: java

我想将除数字以外的所有内容都设为无效输入。目前,我正在使用InputMismatchException并在运行代码时捕获它。我该怎么做才能检测用户是否什么也没输入,只按Enter键?

%= link_to 'Edit Ingredient', edit_recipe_ingredient_path(@recipe, ingredient) %>

1 个答案:

答案 0 :(得分:0)

Scanner唯一注意行边界的时间(即按ENTER键时)是在调用nextLine()(或hasNextLine())时。使用nextDouble()Scanner会将空白行视为数字之间的更多空白而忽略。

如果您想知道用户何时在不输入任何数据的情况下按ENTER键,就必须放弃使用keyboard.nextDouble()直接从输入中读取数字,而只处理输入一行的便利性。使用keyboard.nextLine()一次读取每一行。然后,您可以根据用户是否在该行上键入内容来进行操作。例如:

String line = keyboard.nextLine();
if (line.length() == 0) 
    System.out.println("You didn't enter anything");
else 
    System.out.println("You entered: " + line);

当然,由于您现在不使用keyboard.nextDouble()直接从键盘读取double数字,所以您可以自己解析每个非空白行上的数字。这并不难,只是要做和了解的一件事。一种方法是使用Double.parseDouble

double doubleValue = Double.parseDouble(line);

在输入错误的情况下,这将抛出NumberFormatException而不是InputMismatchException,因此请为这一微小差异做好准备。

您还可以使用另一个新的Scanner对象来处理行,就像使用keyboard扫描仪时一样:

Scanner sc = new Scanner(line);
double doubleValue = sc.nextDouble();
// OR all on one line:
double doubleValue = (new Scanner(line)).nextDouble();