是否可以在不使用 else-if 的情况下将多个 if 语句与单个 else 子句相关联?

Sou*_*nta 0 java if-statement

我有一种验证方法,在该方法中我必须一一检查条件,然后相应地抛出错误消息。

为了实现这一点,我使用了多个 if 语句,如果所有条件都为假,我应该执行一个任务。

这是我的代码:

if(s1.equals("") || s2.equals("") || s3.equals("") || s4.equals("") || s5.equals("") || s6.equals(""))      
    Toast.makeText(getApplicationContext(),"Enter all Details first", Toast.LENGTH_SHORT).show();       
if(!s5.matches("[A-Za-z0-9]+"))     
    e5.setError("Username cannot contain special characters");      
if(s5.length()<6)
    e5.setError("Username must be a minimum of 6 characters.");
if(!(s3.contains("@")&& s3.contains(".")))
    e3.setError("Enter a valid Email Id");      
if(!s6.equals(s7))
    e7.setError("Passwords dont match");
if(s2.length()!=10)     
    e2.setError("Please enter a valid 10 digit number");        
else
{
    Validate v2=new Validate();
    v2.store_values(s1,s2,s3,s4,s5,s6,s8);
    v2.execute();
}   
Run Code Online (Sandbox Code Playgroud)

问题是 else 语句只与最后一个 if 语句相关联,而前 5 个 if 语句独立工作。

请注意,我不能使用 else-ifs,因为所有字段都应该被验证——例如,即使s3是无效的,也s6必须被验证。因此,必须评估所有 if 语句,无论有多少条语句被评估为真。

我怎么解决这个问题?

Era*_*ran 5

将多个 if 语句与同一个 else 语句关联的唯一方法是 using if-else-if...else,这不是您所需要的,因为您希望评估所有 if 语句,并且if-else-if...else只会评估 if 语句,直到其中一个被评估为 true .

相反,您可以使用将输入标记为无效的标志(布尔变量)并使用它代替 else 语句来确定输入是否有效。

boolean valid = true;

if(s1.equals("") || s2.equals("") || s3.equals("") || s4.equals("") || s5.equals("") || s6.equals("")) {     
    Toast.makeText(getApplicationContext(),"Enter all Details first", Toast.LENGTH_SHORT).show();    
    valid = false;
}   
if(!s5.matches("[A-Za-z0-9]+")) {    
    e5.setError("Username cannot contain special characters");  
    valid = false;
} 
if(s5.length()<6) {
    e5.setError("Username must be a minimum of 6 characters.");
    valid = false;
} 
if(!(s3.contains("@")&& s3.contains("."))) {
    e3.setError("Enter a valid Email Id");    
    valid = false;
}   
if(!s6.equals(s7)) {
    e7.setError("Passwords dont match");
    valid = false;
} 
if(s2.length()!=10) {     
    e2.setError("Please enter a valid 10 digit number");
    valid = false;
} 
if (valid) {
    Validate v2=new Validate();
    v2.store_values(s1,s2,s3,s4,s5,s6,s8);
    v2.execute();
}
Run Code Online (Sandbox Code Playgroud)