【问题标题】:null value in if condition and null pointer exception javaif条件和空指针异常java中的空值
【发布时间】:2012-02-16 15:51:23
【问题描述】:

我想在 java 中做类似下面的事情。

String subject=null,receiver=null,subject_db=null,receiver_db=null,cc=null,cc_db=null;
suject=msg.getSubject();
sub_db=rs.getString("subject");
receiver=msg.getreceiver();
receiver_db=rs.getString("receiver");
cc=msg.getcc();
cc_db=rs.getString("cc"); String foldername;

if((subject.equals(sub_db)) && (receiver.equals(receiver_db)) && (cc.equals(cc_db)))
  foldername="spam";
else
  foldername="Inbox";

正如您在此处看到的,任何变量都可以是null。如果发生这种情况,那么它会抛出 NullPointerException。有什么办法可以让我喜欢, String s1=nullString s2=null 如果我比较 if(s1.equals(s2)) 然后它返回我 true... 我知道上面的代码无法实现这一点。但是我该如何以其他方式做到这一点?

如果我未能正确解释我的问题,我真的很抱歉......

我会很感激任何帮助..

谢谢你..

【问题讨论】:

    标签: java exception pointers null


    【解决方案1】:

    比如……

    private boolean nullsOrEquals(string s1, string s2)
    {
      if (s1 == null)
        return (s2 == null);
    
      return s1.equals(s2);
    }
    
    if (nullsOrEquals(subject, sub_db) && [etc])
      foldername="spam";
    else
      foldername="Inbox";
    

    【讨论】:

      【解决方案2】:

      if((s1 == null && s2 == null) || s1.equals(s2))

      【讨论】:

      • 这应该是一条评论。不? :p
      • 或者更准确地说,是为了覆盖您的示例并避免 NPE...if((s1 == null & s2 == null) || s1.equals(s2))
      • @Elite,抱歉,刚刚加入,在我得到一些代表之前无法发表评论:( 尽我所能提供帮助,但我目前只能发布答案。
      • 请将完整表达式编辑为答案
      【解决方案3】:

      如果我了解您想要比较字符串,即使它们为空。

      为此,只需在 if 语句中添加一个条件,例如:

      if((string1 == null && string2==null) || string1.equals(s2))
      {
      //Your code
      }
      

      【讨论】:

      • 感谢大家的回复。最后我喜欢它。 private static boolean nullsOrEquals(String s1, String s2) { if(s1 == null) { if(s2 == null) { return true; } 返回假; } if(s2 == null) { return false; } 返回 s1.equals(s2); }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多