应该用topic_name.equals("")比较吧.

解决方案 »

  1.   

    应该是这样:  if(topic_name==null && topic_name.equals(""))
        out.println("空");
      else 
        out.println("不空");你自己试试吧!
      

  2.   

    这个问题我遇到过,当时差点气死,最后还算成功了。建议使用这个方法:
    if(topic_name.trim().length()==0)
    out.println("空")
    else
    out.print("不空")
    null和""是不一样的,remember!
      

  3.   

    National(清心)的还是有问题,应该先判断是否为空,然后再trim(),否则有可能发生NullPointerException,
    if(topic_name!=null&&topic_name.trim().length()>0)
    out.println("不空")
    else
    out.print("空")
      

  4.   

    谢谢各位,
    我尝试过各位的方法了,最完善的应该是cherami的,仅用National(清心)的方法的话,也行,但如果真会发生NullPointerException的话,岂不危险? 但小弟不明白什么时候会发生这种情况,请指教~另外
    用 topic_name.equals("")表达式比较是行的,
    用 topic_name==null && topic_name.equals("") 不行的
    也就是说那里不是null,大侠们可以分析一下null和""有什么不同吗?还有,equals("")和trim().length()==0这两个方法代表的代表有什么差别呢? 分散给分,谢了!
      

  5.   

    发生NullPointerException的原因是trim方法的字符串不能为空。
    topic_name==null && topic_name.equals("") 当然不行了,既然topic_name是null它就不能再进行比较了,语法上虽然没有错误,但是这个表达式永远不能返回true,如果topic_name为null,那么进行后一个比较时发生NullPointerException,如果topic_name不为null,那么马上返回false,根本就没有意义了。
    如果一个字符串的内容为:String a="    ",那么a.equals("")就返回false,而a.trim().length()==0返回true,因为trim方法输出了字符串中的所有前导和后续空格。