使用try-catch验证输入

时间:2017-04-05 01:48:40

标签: java try-catch

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

这就是我所拥有的:

n >= 1

3 个答案:

答案 0 :(得分:2)

我不一定认为将<script type="text/javascript"> $(function() { $("#form-search").submit(function(e) { e.preventDefault(); str = $('#input-search').val(); url = "<?php echo base_url('questions/tagged/');?>" + str.replace(/\s/g, "-"); window.location = url + '/'; }); }); </script> 用于您的用例。相反,如果输入与您的预期不符,您可以记录错误并提示用户再次输入。

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

[Integer#parseInt()][1]

答案 1 :(得分:1)

你应该把你的条件中的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':");


}

答案 2 :(得分:0)

代码需要正整数,但可以输入字符串并再次循环,直到得到正整数输入值。

Scanner scanner = new Scanner(System.in);
Integer expectedOutput = -1;

public Integer getInputNumber(){

    boolean valid;
    String inputData;

    do {
        System.out.print("Enter Input Number: \t");
        try {
            inputData = scanner.nextLine();
            // expecting positive integers
            if (Integer.parseInt(inputData) > 0) {
                expectedOutput = Integer.parseInt(inputData);
                valid = true;
            } else {
                System.out.println("Invalid Input!");
                valid = false;
            }
        } catch (Exception ex){
            valid = false;
        }
    } while(!valid);
    return expectedOutput;}