繁体   English   中英

在使用Gradle构建的Java控制台应用程序中使用system.in的替代方法?

[英]Any alternatives to using system.in in a java console App built with Gradle?

我有一个基本的控制台应用程序,我只是试图在while循环中使用一个简单的Scanner来捕获用户输入。 我尝试将standardInput = System.in放入build.gradle ,但是我的程序在等待输入时不会阻塞。

while (stillWriting) {
        System.out.println(
                        "Press 1 to write something,\n" +
                        "Press 2 to erase something,\n" +
                        "Press 3 to exit."
        );
        //if you select 1, it goes into the case, but does not block
        //then ends up here again.
        int userSelection = scanner.nextInt();
        switch (userSelection) {
            case 1:
                System.out.println("Enter text to be written: ");
                 //vvvvvv should block here but doesn't. vvvvvv
                String textToWrite = scanner.nextLine();
                paper = pencil.write(paper, textToWrite);
                break;
            case 2:
                //some code
                break;
            case 3:
                stillWriting = false;
                break;
            default:
                System.out.println(userSelection + " is not valid.");
                break;
        }
    }

我是否可以使用其他替代方法或jar使其正确阻止并实际等待输入?

最终在每种情况下都希望输入,如果您只是将新的Scanner()重新分配给扫描器变量,它将被正确阻止。

仍然不会选择换行符。

您必须使用用户输入的<Enter>进行选择,否则(立即)您的String textToWrite = scanner.nextLine();将使用它String textToWrite = scanner.nextLine();

[...]

int userSelection = scanner.nextInt();
scanner.nextLine();   // <-- consume the <enter>

switch (userSelection) {

[...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM