以下是昨天晚上看java.io时写的一个练习:
String str;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do
{
    str=br.readLine();
    System.out.println(str);
    if(str=="string")
      [statements];
}while(!str.equal("quit"));
输入正常,输出也正常,可if却不执行即使条件符合,始终不明白是怎么回事?
还有在最后一行判断循环条件的时候用str!="quit"为什么无法终止?
尚在学习中,希望大家多多指教帮助.

解决方案 »

  1.   

    if(str == "string") 应改为 if(str.equals("string"))while(!str.equal("quit")) 中的equal应改为equals
      

  2.   

    import java.io.*;
    class BF{
    public static void main(String args[]) throws IOException
     {
    String str;
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    do
    {
         str=br.readLine();
         System.out.println(str);
         if(str.equals("string"));
           System.out.println("String here!");
    }while(!str.equals("quit"));
      }
    }
    这样写问题就解决了
    原因是你没弄懂equals的原理,==比较的是表层的东西,而所有外覆类的equals都是比较对象的内容的
      

  3.   

    ==是比较他们的hashcode,并非比较他们的内容
    请楼主注意