将多个粘贴的行正确处理到 Java 命令行中

Properly process multiple pasted lines into Java command line

提问人:Nic 提问时间:10/24/2022 最后编辑:Nic 更新时间:10/24/2022 访问量:34

问:

如何将多行粘贴到 Java 8 控制台应用程序中? 很简单,但我无法使用 Scanner 抓住最后一行。 找到了各种主题,但没有字符串行(它们都在等待整数等)。

我想在以下方案中过去(例如来自编辑器):

line0
line1
line2
line3
line4

这些行的结尾是“\n”,但 Java 省略了最后一行(因为我假设它不是以“\n”结尾)。

对我来说,如果最后需要按 ENTER,或者会自动检测到粘贴结尾,对我来说都无关紧要。 不过,我唯一实现的是立即打印第 0 行到第 3 行,并且仅在 ENTER 之后打印第 4 行(强制执行新行)。 这导致了令人不快的混合:

line0
line1
line2
line3 (I have to press ENTER now)

line4

每一行都将传递到另一个函数中,为了更好地理解,我使用“println”。

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter lines: \r\n");

        while (sc.hasNext())
        {
            System.out.println(sc.next());
        }
        sc.close();

还尝试了各种“useDelimiter”组合和“do...while“而不是”while“,但没有成功。

ArrayList 的同样事情根本没有导致结束(无论是在按 ENTER 之后还是在添加“if line != null”语句之后):

    public static ArrayList<String> inputLines = new ArrayList<String>();

       while (sc.hasNext())
        {
            inputLines.add(sc.next());
        }
        sc.close();

        inputLines.forEach((inputLine) -> System.out.println(inputLine));

TIA ...我绝望了......

数组列表 java.util.scanner

评论

1赞 user16320675 10/24/2022
但这是操作系统的限制,或者更准确地说,是对 shell 的限制 - 它只在按下/给定换行符 (ENTER) 后发送一行(也许用户想在发送输入之前删除/编辑某些内容)
1赞 g00se 10/24/2022
如何在 Java 8 控制台应用程序中发布多行?我不确定你说的“post”是什么意思,但如果你想要行作为输入,为什么不读取一个文件呢?
0赞 Nic 10/24/2022
对不起,错别字!意思是“粘贴”。好吧,但奇怪的是,IntelliJ 终端在检测到换行符后立即开始解释行。也许使用控制标志更有效?
1赞 g00se 10/25/2022
是的,这是一种假终端,所以它的行为有点随意。无论如何,应用程序是为用户而不是开发人员准备的,并且用户不使用 IDE。

答: 暂无答案