如何在Java中将输入作为整个字符串从stdio读取

如何在Java中将输入作为整个字符串从stdio读取,java,input,stdio,Java,Input,Stdio,我做了以下工作: 1) 创建了BufferedReader 2) 从stdio逐行读取,并将其附加到StringBuilder br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder everything = new StringBuilder(); String line; while((line = br.readLine()) != null) { everything.append(li

我做了以下工作:

1) 创建了
BufferedReader

2) 从
stdio
逐行读取,并将其附加到
StringBuilder

br = new BufferedReader(new InputStreamReader(System.in));

StringBuilder everything = new StringBuilder();
String line;

while((line = br.readLine()) != null) {
    everything.append(line);
}
System.out.println(everything.toString());
但我不能退出循环。 例如,当我通过这样的输入并按ENTER键时,我仍然在循环中

aut Caesar aut nihil
aut aut
de mortuis aut bene aut nihil

我怎样才能克服这个问题?或者我应该使用另一种方法读取
stdio

这段代码只是Scanner类的一个示例,它将读取用户输入的字符串并将其存储在字符串中

    Scanner sc=new Scanner(System.in);
    System.out.println("enter data");

    while(sc.hasNextLine())
    {
        String str=sc.nextLine();
        System.out.println(str);
    }

stdin
是一个打开的流,因此在另一端有可能正在生成某些内容并将被发送,所以每次调用
readLine()
时,应用程序都需要等待它。为了解决这个问题,您可以使用一些停止序列来决定是否应该退出循环。这样的序列可以是像
结束
停止
,或者可能根本没有单词,只是空行。因此,您的解决方案可能看起来像
而((line=br.readLine())!=null&&!line.equals(“stop”){…}
您可以通过按
生成
EOF
。完全取决于运行程序所使用的控制台。为什么不使用Scanner类来读取用户输入?这比这种方法简单得多。@Manishsakpal,你能举个例子吗?如果我传递我提到的字符串,它将只打印第一个字符串=(但我希望所有字符串都被打印出来。当然,它会打印文本。但是,您的代码会等待下一次输入。如何避免这种等待?它等待下一次输入是什么意思?让我们来看看。