捕获InputMismatchException并不返回消息

时间:2014-01-11 01:02:37

标签: java exception try-catch

所以我正在进行这项学校作业,基本上需要确保用户输入一个有效的选项(1,2或3)。

我应该使用开关,但这就是我所做的:

private void choice() {
    try {
        Scanner s = new Scanner(System.in);
        int option = s.nextInt();
        if (option == 1) {
            start();
        }
        if (option == 2) {
            info();
        }
        if (option == 3) {
            System.exit(0);
        }
        throw new InputMismatchException("Enter valid input");
    } catch (InputMismatchException e) {
        System.out.println(e.getMessage());
    }
}

如果您在控制台中输入一个数字,它将返回我的消息,如果您输入任何其他内容,它将返回“null”。这是为什么?因为如果我删除异常并查看堆栈跟踪(例如输入字母时),它会显示一个InputMismatchException。

提前致谢!

1 个答案:

答案 0 :(得分:1)

public void choice() throws InputMismatchException {
    Scanner s = new Scanner(System.in);
    int option = 0;

    try {
        option = s.nextInt();
    } catch (InputMismatchException e) {
        throw new InputMismatchException("Enter valid input");
    }

    if (option == 1) {
        System.out.println("e");
    } else if (option == 2) {
        System.out.println("f");
    } else if (option == 3) {
        System.exit(0);
    } else {
        throw new InputMismatchException("Enter valid input");
    }

}

public static void main(String[] args) {
    try {
        new Test().choice();
    } catch (InputMismatchException e) {
        System.out.println(e.getMessage());
    }
}

把int选项放在try里面。完成。