首页 > 解决方案 > 扫描仪需要输入两次才能继续

问题描述

嘿伙计们,我在这里遇到了一个奇怪的小问题,我要求用户输入他们的菜单选择,并根据他们选择的内容调用某种方法。

经过一番谷歌搜索后,我使用了scanner.next(),但由于某种原因,只有当我输入1或2时,我按回车,然后再次按说1,然后它才真正起作用。但奇怪的是,它立即调用选项 3、4、5 和 6,而无需我输入两次数字。

我在scanner.nextInt()之后尝试了scanner.nextLine(),这让我不得不将我的选项1或2放入没有结果。

while(exit == 0)
    {

            System.out.println("\n");
            System.out.println("Menu 1: Display fullname of the user \n");
            System.out.println("Menu 2: Display of user information \n");
            System.out.println("Menu 3: Change password \n");
            System.out.println("Menu 4: List all of users in the library full name\n");
            System.out.println("Menu 5: Search for a book\n");
            System.out.println("Press 6 to search for a books location in the library\n");
            System.out.println("Press 0 to exit\n");

            System.out.println("Enter choice: ");
            int menuChoice = scanner.nextInt();
            scanner.next();


                     if(menuChoice == 1)
                    {
                        displayUserFullName();
                    }
                    else if(menuChoice == 2)
                    {
                        displayUserInformation();
                    }

                    else if(menuChoice == 3)
                    {
                        menuForChangePassword();
                    }

                    else if(menuChoice == 4)
                    {
                        displayAllUserInSystem();
                    }
                    else if(menuChoice == 5)
                    {
                        searchBookByISBN();
                    }
                    else if(menuChoice == 6)
                    {
                        searchBookLocation();
                    }
                    else if(menuChoice == 0)
                    {
                        exit = 1;
                    }
}

先感谢您!

标签: javajava.util.scanner

解决方案


int menuChoice = scanner.nextInt();
scanner.next();

阅读扫描仪的javadoc。它等待用户输入:

public String next(): [..] 这个方法在等待输入扫描时可能会阻塞

所以在你的程序中,你说:等待用户输入和 int,然后等待用户输入一些东西。

删除scanner.next();它应该可以工作。


推荐阅读