如何在Java中将输入作为整个字符串从stdio读取
我做了以下工作: 1) 创建了如何在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
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,你能举个例子吗?如果我传递我提到的字符串,它将只打印第一个字符串=(但我希望所有字符串都被打印出来。当然,它会打印文本。但是,您的代码会等待下一次输入。如何避免这种等待?它等待下一次输入是什么意思?让我们来看看。