如果条件没有正确短路

时间:2014-05-02 18:05:14

标签: java short-circuiting

我有if条件来评估电子邮件地址。我正在测试2件事

  • 它有一个" @"签署
  • 在第一个@符号之后,它以" gmail.com"结束。

我对短路的理解是,如果OR(||)语句中的第一个条件为真,那么第二个条件不会被评估。然而,我得到NullPointerException因为第二个陈述得到了评估(我已经对它进行了测试)。

我对这里的短路有什么了解?

相关代码如下:

仅供参考:emailtext来自EditText元素,在这种情况下是" notavalidemail"

String[] split = emailtext.split("@", 2);
final AlertDialog.Builder notifier = new AlertDialog.Builder(this);
Log.i("GetToken","Split[0]=" + split[0] + "; length=" + split.length);

if (split.length == 1 || !split[1].equals("gmail.com")) {
    //Tell the user they didn't enter a correct gmail
}

代码中的日志返回:

05-02 13:51:16.447  27553-27553/com.farmsoft.lunchguru.app I/GetToken﹕ Split[0]=notavalidemail; length=1

1 个答案:

答案 0 :(得分:0)

使用此代码可以避免此问题:

    String[] split = emailtext.split("@", 2);

    final AlertDialog.Builder notifier = new AlertDialog.Builder(this);
    Log.i("GetToken","Split[0]=" + split[0] + "; length=" + split.length);

    boolean errorMail = true;
    if(split.length == 2)
    {
        if(split[1].equals("gmail.com"))
        {
            errorMail = false;
        }
    }
    if(errorMail)
    {
        // Mail error
    }