当前位置: 首页 > 知识库问答 >
问题:

试图读取多行cmd输入

笪建章
2023-03-14

我试图写一个方法:

  • 打印一条消息(例如:“粘贴您的输入:”)
  • 等待用户按enter键
  • 读取粘贴的所有行,并将它们添加到一个字符串中

(空行可用于确定输入的结束。)

第一个syso执行打印部分,并且正确读取第一行,但是它永远不会退出while循环。为什么?必须有一个结局吗?

public static String readInput(String msg) {
    System.out.print(msg);
    String res = "";
    try (BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in))) {
        String line;
        while ((line = buffer.readLine()) != null && !line.isBlank())
            res += "\n" + line;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return res;
}

我已经看过以下网站,但都没有帮助:

  • 如何在Java中读取多行输入
  • https://www.techiedelight.com/read-multi-line-input-console-java/
  • 使控制台等待用户输入关闭

编辑:

同样的错误也适用于:

public static String readInput(String msg) {
        System.out.print(msg);
        String res = "";
        try (BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in))) {
            res = buffer.lines().reduce("", (r, l) -> r + "\n" + l);
            System.out.println(res);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return res;
    }

共有1个答案

朱明知
2023-03-14

为什么不使用这个语句?

 while (!(line = buffer.readLine()).isEmpty())

在这种情况下,发送空行将退出循环

但是,如果插入带有空行的大文本(例如,新段落的开头或它们之间的空格),则程序将终止。

 类似资料:
  • 问题内容: 我想在运行后从命令行输入我的输入 输入示例可以是: 我的问题是: 1)如何使用我的输入创建列表数据? 2)如何让Python知道我已经完成了输入,它应该执行其余的代码? 问题答案: 该问题的解决方案取决于您使用的操作系统。 基本上,如果您想使用多行输入,则必须使用代替。由于在Python中是类似文件的对象,因此该方法将一直读取到到达文件末尾为止。它以特殊字符(文件结尾)标记。在不同的操

  • 问题内容: 我们的教授让我们用Java进行一些基本的编程,他提供了一个网站以及所有可以注册和提交问题的内容,因为今天我需要做一个例子,我觉得自己处在正确的轨道上,但是我无法找出其余的。这是实际的问题: 这是到目前为止我得到的: 现在,我总是会得到答案,因为我正在阅读单行,如何考虑所有行?谢谢 由于某些奇怪的原因,每次我要执行时都会出现此错误: 无论我使用什么版本的答案,都会出现此错误,该怎么办?

  • 问题内容: 我想创建一个Python程序,该程序需要多行用户输入。例如: 如何接收多行原始输入? 问题答案: 要将每一行作为字符串获取,你可以执行以下操作: Python 3:

  • 问题内容: 我正在尝试做的是拥有多个具有不同变量的输入。每个变量将是不同方程式的一部分。我正在寻找一种方法来做,我想我有一个主意。我只想知道这是否合法,也许还有更好的方法。 问题答案: 如果每个输入都问相同的问题,则应使用循环和输入数组: 或者如Chip所建议的,您可以从一行中解析输入: 您在正确的轨道上,所做的工作正常。这只是一种更好,更灵活的处理方式。

  • 我正在开发一个应用程序(控制台),其中包含一个while循环,我希望允许用户暂停和恢复。经过一些研究,似乎一个额外的线程负责等待用户输入是正确的解决方案。 我已经能够实现持续等待输入的额外线程,并且还有一个kill方法,它设置flag变量来停止线程while()循环。不幸的是,除非有输入,否则while循环不会结束,只有在输入线程的while环至少完成一次后,这个kill标志才会生效。由于主线程也

  • 我如何使它能够提示用户在一行中输入多个由空格分隔的整数。如果第一个整数为0或小于0,当输入所有整数并按下回车键时,它将打印出“不良输入”。此外,我如何使它,当用户输入一个负数在行的末尾,它将停止输入数字,并使乘法所有他们在一起。 这是我到目前为止所拥有的,但我不确定我做得对不对。