String str1 = null;
BufferedReader Read1 = new BufferedReader(new InputStreamReader(
System.in));
try {
str1 = Read1.readLine();
} catch (IOException e1) {
// TODO Auto-generated catch block
System.out.println("error!!!");
e1.printStackTrace();
}
PrintWriter fd = null;
try {
fd = new PrintWriter(new FileWriter("out.txt"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
 while (str1 != null) { //就是这个判定出问题
fd.println(str1);
try {
str1 = Read1.readLine();
 } catch (IOException e) {
 e.printStackTrace();
 }
fd.flush();
 }
System.out.println("Founction1 terminated!!"); fd.close();
System.out.println();
System.out.println();上面的程序断点调试的时候 在需要输入的时候直接回车str1的值已经是""了 但是while循环依然继续执行而不会结束 为什么??

解决方案 »

  1.   

    null 跟 ""是不一样的你可以这样写:while(str1.length > 0)
      

  2.   

    我试过把while(str1!=null)改成while(str1!=" ")是空格 然后我输入空格循环还是不结束 为什么呢?换成其它具体的字符串也是一样 例如quit, bye之类的
      

  3.   

    while(str1!=" ")
    改成
    while(!str.equals(" "))
      

  4.   

    同意楼上,楼主自己可以实践一下equals()和 ==对于String类的效果。
      

  5.   

    ""开辟了内存空间,而NULL还没有吧。
      

  6.   

    你的程序结构本身有问题:bufferReader是缓存读取,你没有关闭它,她就一直存在直到程序结束。而str1一直在读缓存里的值,它当然不会结束,
      

  7.   

    “”这个只是代表一个没有内容的值,表示没有值null。这两个定义不同。
      

  8.   

    null 表示对象不存在,没有。
    “” 对象已经存在了,只是它的值是空的。
    while(!str1.equals(""))