繁体   English   中英

使用try-catch验证输入

[英]Validating input with try-catch

我正在尝试学习try-catch使用并且必须验证输入,以便用户必须输入1或2才能继续该程序。 我相信我很接近,但如果用户输入错误的内容,例如'3'或'2.12',似乎无法让程序继续运行。

这就是我所拥有的:

String input = " ";

try {

        Scanner scan = new Scanner(System.in);
        input = scan.next();

        Integer.parseInt(input);

        if (!input.equals("1") && !input.equals("2")) {

            System.out.println();
            System.out.println("Invalid imput! Please select '1' or '2':");
        }

    } catch (InputMismatchException a) {

        System.out.println();
        System.out.println("Invalid imput! Please select '1' or '2':");

    }

我没有必要为您的用例使用InputMismatchException 相反,如果输入与您的预期不符,您可以记录错误并提示用户再次输入。

但是,如果输入不是实际整数, [Integer#parseInt()][1] 抛出异常。 在您的原始代码中,您实际上从未使用此调用的结果,但我在答案中已经这样做了。 在这种情况下,使用try-catch块可能有意义。

int result;
while (true) {
    try {
        Scanner scan = new Scanner(System.in);
        input = scan.next();
        result = Integer.parseInt(input);
    } catch(Exception e) {
        System.out.println("Could not parse input, please try again.");
        continue;
    }

    if (result != 1 && result != 2) {
        System.out.println("Invalid input! Please select '1' or '2':");
    }
    else {
        break;
    }
}

你应该把你的条件中的throw语句放入你的catch语句中获取错误,代码应该是这样的:

String input = " ";

try {

    Scanner scan = new Scanner(System.in);
    input = scan.next();

    Integer.parseInt(input);

    if (!input.equals("1") && !input.equals("2")) {

        System.out.println();
        System.out.println("Invalid imput! Please select '1' or '2':");
        throw new InputMismatchException ();
    }

} catch (InputMismatchException a) {

    System.out.println();
    System.out.println("Invalid imput! Please select '1' or '2':");


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM