Java Input Needed Twice - 我解析了一个整数,所以我可以使用scanner.next();

Posted

技术标签:

【中文标题】Java Input Needed Twice - 我解析了一个整数,所以我可以使用scanner.next();【英文标题】:Java Input Needed Twice - I parsed an integer so I could use scanner.next(); 【发布时间】:2020-08-24 13:14:23 【问题描述】:
public static void main(String[] args) 

    Scanner scanner = new Scanner(System.in);

    // printing menu 
    System.out.println(menu);
    boolean quit = false;
    int selection;
    do 
        // next user input (of integer type) will be stored in the variable selection
        selection = Integer.parseInt(scanner.next());
        switch (selection) 
            case 1:
                System.out.println("Please enter a new record as John Michael West Doe, 574 Pole ave, St. Peter, MO, 63303, 3142752000");

                scanner.useDelimiter(",");

                Person[] people = new Person[0];

                while (scanner.hasNext()) 
                    String fullName = scanner.next();
                    String street = scanner.next();
                    String city = scanner.next();
                    String state = scanner.next();
                    String zipC = scanner.next();
                    String phoneN = scanner.next();

                    System.out.println(fullName);
                

                break;
            case 2:
                // method to delete record - remove 
                break;
            case 3:
                // search by telephone number
                break;
            case 4:
                // find record by first name
                break;
            case 5:
                // find record by last name
                break;
            case 6:
                // update a record 
                break;
            case 7:
                quit = true;
                break;
            default:
                System.out.println("Invalid");
        
     while (selection != 7);

嗨,我目前正在处理案例 1 - 我的问题是我必须输入两次代码才能接受它并打印出 fullName 字符串..

即使在开始时,当我进行选择并按 1 并输入时,我也必须在弹出“请输入新记录.....”行之前键入另一个键。

我刚刚了解了 nextInt 的作用以及它是如何换行的,所以我对其进行了解析以便使用scanner.next();

我只是想看看挂断在哪里。

谢谢。

【问题讨论】:

【参考方案1】:

scanner.nextInt()Integer.parseInt(scanner.next()) 之间的差异为零,但输入流中的下一个标记不是整数时抛出的错误类型除外。你一定误解了一些事情。

我将您的代码粘贴到文件中,对其进行编译、运行,但无法重现您观察到的“我必须按两次 Enter”的行为。我只需按一次回车,Please enter... 就会显示出来。

您的代码没有任何问题。至少,没有什么可以解释为什么你需要在这里双输入。

【讨论】:

感谢您的澄清。当我按下一个键时,我必须在“请输入..”消息显示之前按下另一个键。然后,当我以所示格式粘贴“姓名、地址等”时,我必须再次粘贴,然后才能将其打印到控制台。不知道发生了什么事。 你必须按1,然后回车,然后'1'被'nextInt'接收。您不能(轻松地)使用命令行来拥有一个系统,您只需按 1 并立即运行代码。如果你想要的话,真的可以构建一个 GUI(使用 swing 或 javafx)。

以上是关于Java Input Needed Twice - 我解析了一个整数,所以我可以使用scanner.next();的主要内容,如果未能解决你的问题,请参考以下文章

Block pool ID needed, but service not yet registered with NN java.lang.Exception: trace 异常解决

L. Twice Equation ACM Nanning 2017

The JAVA_HOME environment variable is not defined correctly,this environment variable is needed to r

The JAVA_HOME environment variable is not defined correctly,this environment variable is needed to r

关于Elipse安装报错Unfortunately the Java version needed to run Eclipse Installer couldn't be found on

软件安装:--add-needed