import java.io.*;
import java.net.*;
public class Test
{
public static void main(String args[])
{
try{
String str=new String();
String temp=new String();
BufferedReader inobj=new BufferedReader(new InputStreamReader(System.in));
while((temp=inobj.readLine())!=null)
{
str=str+temp;
System.out.println("you input  "+temp);
}
System.out.println("you input  "+str);
}catch(IOException e)
{
System.out.println(e);
}
}
}
这个循环怎么没有结束啊

解决方案 »

  1.   

    while循环中加上一行
    if(temp.equals("break")) //break的时候结束
    break;
      

  2.   

    inobj.readLine()为null时就结束。
    readLine()返回包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null。每运行一次readLine(),BufferedReader的指针指向下一行。 
      

  3.   

    readLine
    public String readLine()
                    throws IOException读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。 返回:
    包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 
    抛出: 
    IOException - 如果发生 I/O 错误~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    它的意思不是说输入回车就结束么?
      

  4.   

    那是说一行的结束,不是你程序的结束。你的程序一直在一行行的读。必须等到null结束或者是强制结束 break。
      

  5.   

    到达流的末尾,返回null,但是你回车换行后表示你的readLine()这个方法结束,并不是到达流的末尾.
    while(!((temp=inobj.readLine()).equals(""))) 
    改成这个,表示你什么也不输入,程序结束
      

  6.   

    如果想回车就结束的话,把while循环去了就可以了。
      

  7.   

    不一样的,自己试下吧.while循环去了去了你只能做一次的.equals("")就是你什么都不输,返回真,while循环结束
      

  8.   

    javaxiaobai 
    到达流的末尾,返回null,但是你回车换行后表示你的readLine()这个方法结束,并不是到达流的末尾. 
    while(!((temp=inobj.readLine()).equals(""))) 
    改成这个,表示你什么也不输入,程序结束
    这个就是我要求的。
    ~~~~~~~~~~~~~~~~
    但是为什么没有返回null呢?
      

  9.   

    String s="";
    String s=null;
    是不一样的,搞清楚,从键盘输入不会返回null的
    如果有一个文件流,你从文件流里读东西,读到末尾就会返回null
      

  10.   

    哈哈,还不如先测试输入某个字符结束再查问题。
    你的判断和自己输入有关,NULL是什么概念