如果其他逻辑在Android中不起作用

时间:2013-05-30 00:57:56

标签: java android if-statement

这3个联系信息(主页编号移动编号& 电子邮件地址)应至少填写一个。如果用户输入其中一个联系信息的错误信息,将执行陷印代码。

但不幸的是,我的代码无效......

   else if ((Homeno.equals("")) || (MobileNo.equals("")) || (Email.equals("")) ) {
    Toast.makeText(getApplicationContext(), 
    "Please enter at least one (1) your contact information.", Toast.LENGTH_SHORT).show();
}

//TRAPPING CODES
//Tel no. Validator
else if (Homeno.length()<9) {
    Toast.makeText(getApplicationContext(), 
    "Invalid Telephone Number!", Toast.LENGTH_SHORT).show();
}

//Mobile Number must be at least 12
else if (MobileNo.length()<12) {
    Toast.makeText(getApplicationContext(), 
    "Mobile Number must be 12 digits!", Toast.LENGTH_SHORT).show();
}

//Mobile Validator
else if (!validcp.matches()) {
    Toast.makeText(getApplicationContext(), 
    "Invalid Mobile Number!", Toast.LENGTH_SHORT).show();
}

//Email validator
else if (!matcherObj.matches()) {
    Toast.makeText(getApplicationContext(), 
    "Invalid Email Address!", Toast.LENGTH_SHORT).show();
}

1 个答案:

答案 0 :(得分:2)

首先你说代码不起作用。请具体。你说Out of 3 contact information (Home No., Mobile No. & Email Address) should be filled out at least one。从你所说的我明白,用户应该可以输入其中任何一个,并将另外两个留空。但是,根据上述声明:

else if ((Homeno.equals("")) || (MobileNo.equals("")) || (Email.equals("")) ) {}

这意味着如果其中任何一个为空,您的应用将显示祝酒词:

Please enter at least one (1) your contact information( even though any one is entered).

如果任何一个为空,如果上述语句之后的条件(因为您使用了else if),控件将不会进入任何其他控件。希望这可以帮助。这是您可能想要查看的内容之一。对于其他问题,请具体说明,我们可以尽力帮助您。

<强>更新 你应该有类似的东西:

...
else if ((Homeno.equals("")) && (MobileNo.equals("")) && (Email.equals("")) ) {
    Toast.makeText(getApplicationContext(), 
    "Please enter at least one (1) your contact information.", Toast.LENGTH_SHORT).show();
}

事实上,我可能会想到另外一个问题:

如果您有四个字段,那么我相信您会想要检查所有四个字段的有效性。因此,您不应使用else if来验证条件。相反,你可能想检查所有四个。

使用像:

这样的全部内容
...
}else if ((Homeno.equals("")) && (MobileNo.equals("")) && (Email.equals("")) ) {
    Toast.makeText(getApplicationContext(), 
    "Please enter at least one (1) your contact information.", Toast.LENGTH_SHORT).show();
} else{

    if (Homeno.length()<9) {
        Toast.makeText(getApplicationContext(), 
        "Invalid Telephone Number!", Toast.LENGTH_SHORT).show();
    }

    //Mobile Number must be at least 12
    if ( (MobileNo.length()<12) {
        Toast.makeText(getApplicationContext(), 
        "Mobile Number must be 12 digits!", Toast.LENGTH_SHORT).show();
    }

    //Mobile Validator
    if (!validcp.matches()) {
        Toast.makeText(getApplicationContext(), 
        "Invalid Mobile Number!", Toast.LENGTH_SHORT).show();
    }

    //Email validator
    if (!matcherObj.matches()) {
        Toast.makeText(getApplicationContext(), 
        "Invalid Email Address!", Toast.LENGTH_SHORT).show();
    }
}

希望它能回答您的所有疑问。如果您有其他疑虑或者您没有得到任何建议,可以在下方发表评论。

更新2:

根据@Nicholas的建议,我更新了答案。只有当其中一个子句不为空时,才会执行这四个if子句。