2013-05-13 87 views
2

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

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 

} 
+0

它不会终止,因为输入值不应该采取任何NULL值 – 2013-05-13 10:07:17

+0

比方说您不给任何输入,这并不意味着该行被赋值为null,它不是空,你不能从命令行输入null,所以条件永远不会变成真的! – anshulkatta 2013-05-13 10:12:58

回答

2

代码

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

,如果你不指定null来行,你不能指定为null,通过控制台的对象,这样就意味着你必须编写它永远不会为真如输入键或其他字符来结束输入。

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

这意味着当您在结束键入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 

    } 
+0

anshulkatta非常感谢您提供的解决方案。有用! – 2013-05-13 11:06:05

+0

我的荣幸,不要忘记接受答案 – anshulkatta 2013-05-13 11:07:19

+0

接受再次感谢。 – 2013-05-13 11:29:42