扫描仪输入验证Java

时间:2016-12-09 09:40:39

标签: java java.util.scanner

phase

有我的代码。我想确保它不会抛出异常并且还要求用户输入正确的输入格式,这是一个整数。但它不断进入无限循环。

2 个答案:

答案 0 :(得分:0)

input.nextLine();添加到else块。

这将允许您将下一个值放入缓冲区而不是陷入无限循环。

答案 1 :(得分:0)

我相信正确的解决方案是:

    while (!isValid) {
        System.out.println("Enter house number: ");
        if (input.hasNextInt()) {
            houseNum = input.nextInt();
            isValid = true;
        }
        else {
            System.err.print("Wrong input. Try again");
            isValid = false; // not really necessary; isValid was already false
        }
        input.nextLine();
    }

无论读取数字是否成功,我都会从输入中跳过一行。如果没有读取数字,则会跳过整个错误的行;如果读取了一个数字,它只是在数字后跳过换行符。