Java 输入BufferedReader如何终止它

Java 输入BufferedReader如何终止它,java,io,Java,Io,我有这段代码 private String getMessage(BufferedReader in) throws IOException{ StringBuilder sb = new StringBuilder(); while(true){ char pom = (char) in.read(); sb.append(pom); if (sb.toString().contains("\r\n")) {

我有这段代码

private String getMessage(BufferedReader in) throws IOException{

     StringBuilder sb = new StringBuilder();

     while(true){
        char pom = (char) in.read();
        sb.append(pom); 

        if (sb.toString().contains("\r\n")) {                  
               String result = sb.toString();
               result = result.replace("\r\n", "");
               return result;
        }
     }   
} 
我希望用户在控制台上写一些消息。当他写入“\r\n”时,控制台应结束其输入。但这不起作用。。。你没有一些建议吗?有什么问题吗

在传统用法中,我不想在中使用.close();因为我以后需要这个输入。

试试这个:

private String getMessage(BufferedReader in) throws IOException{
    return in.readLine();
}
好的,如果你想一个字节一个字节地做,那么你可以试试这个:

private String getMessage(BufferedReader in) throws IOException{
   StringBuilder sb = new StringBuilder();
   char prev = (char) 0;
   char cur = in.read();
   while (prev != '\r' || cur != '\n') {
      sb.append(cur);
      prev = cur;
      cur = in.read();
   }
   return sb.toString();
}

你有没有调试过这个程序,看看它失败的地方?“这不起作用”是什么意思?嗯,我写了,它什么也没做。“qdio\r\ndosvp…”并且可以继续写入。可能有兴趣。是的,这将是一个很好的解决方案,但由于某些原因,我需要逐字节读取信息…@user3472536,要逐字节读取信息,您需要一个
InputStream
<代码>读取器s读取字符,而不是字节。与我的代码相同。这是我在控制台上写的东西,可以继续写下去。