扫描程序引起的线程“ main”中的异常java.util.NoSuchElementException

时间:2019-03-29 17:51:30

标签: java

我是新来的,请耐心点:)

我不知道为什么这种方法不能正常工作。它正在为我创建帐户,但是,成功创建帐户后,它无法在同一方法mainMenu()上正常运行。我使用了相同方法的递归调用。 在调试过程中,第二次调用该方法似乎对我的扫描仪来说不是一件好事。

我是学生

   public void mainMenu() {
    System.out.println("Select your option: ");
    System.out.println("1. Open a new account");
    System.out.println("2. Display all accounts");
    System.out.println("If you want to logout press 9");
    Scanner sc = new Scanner(System.in);
    int option = 0;
    do {
        try {
            option = sc.nextInt();
            System.out.println();
            switch (option) {
                case 1:
                    accountUtil.openNewAccount(userConsoleUtil.getUser().getUserName());
                    mainMenu();
                    break;
                case 9:
                    userConsoleUtil.logout();
                    displayLoginMenu();
                    break;
                default:
                    System.out.println("Invalid option! Try again");
            }
        } catch (InputMismatchException e) {
            System.out.println("Invalid option! Try again");
        }
        sc.nextLine();
    } while (option != 9);
    sc.close();
}

如果创建了对象帐户,它应该返回到方法的开头,从而允许创建新帐户或注销退出

2 个答案:

答案 0 :(得分:0)

感觉就像您错误地编写了sc.nextLine(),该函数接受了用户的输入。 在catch块结束之后,sc.nextLine()行可能会为您提供意外的输出

答案 1 :(得分:0)

给出您当前的代码和注释,就好像您是用其他方法创建扫描仪并关闭它们一样。不要那样做关闭扫描仪时,您还关闭了System.in,导致NoSuchElementException

Jackson deserialization of type with different objects