2

以下程序中的 while 循环不会终止,因此我无法在尝试将变量段落打印到控制台的最后一行中获得输出。有类似的问题,但解决方案不切实际,我无法做到。请提出解决方案。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {


    public static void main(String[] args) throws IOException {
        String line = "";
        String paragraph = "";

        System.out.println("Enter the text: ");
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
             while ((line = bufferedReader.readLine()) != null)
             {
                  paragraph = paragraph + line + " ";
             }
          isr.close();
          bufferedReader.close();
          System.out.println(paragraph);
    }//method main ends here

}
4

1 回答 1

2

编码

while ((line = bufferedReader.readLine()) != null)

如果您不将 null 分配给 line ,并且您不能通过控制台将 null 分配给对象,那么这将永远不会是真的,这意味着您必须对其进行编码,例如输入键或任何其他字符来结束输入。

喜欢

while(!(line.equals("exit")))
{
      //whatever
}

这意味着当您在 end 键入 exit 时,程序将终止并打印该段落。

你可以试试这个片段

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

    public class Test {


        public static void main(String[] args) throws IOException {
            String line = "";
            String paragraph = "";

            System.out.println("Enter the text: ");
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader bufferedReader = new BufferedReader(isr);
                 do
                 {
                     line = bufferedReader.readLine();
                      paragraph = paragraph + line + " ";
                 }while(!line.equals("exit"));
              isr.close();
              bufferedReader.close();
              System.out.println(paragraph);
        }//method main ends here

    }
于 2013-05-13T10:19:29.527 回答