带有for循环的Java布尔方法

时间:2017-04-16 09:13:25

标签: java arrays for-loop boolean

嘿我正在尝试在一个应该返回布尔值的方法中执行for循环。但是我不断收到错误。基本上,阵列可以变得非常大,我希望通过整个阵列检查以查找用户名和密码。

public class Users {
    private String username;
    private String password;
    private String[][] accounts = { { "user1", "pass1" }, { "user2", "pass2" } };

    public Users(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public boolean check() {

        for (int i = 0; i < accounts.length; i++) {
            if ((username.equals(accounts[i][0])) && (password.equals(accounts[i][1]))) 
                return true;
            else 
                return false;
        }
    }

}

3 个答案:

答案 0 :(得分:5)

如果false数组中的第一个条目与accountsusername不匹配,您目前正在返回password

如果要检查所有帐户,只应在循环完成后返回false

public boolean check() {
    for (int i = 0; i < accounts.length; i++) {
        if ((username.equals(accounts[i][0])) && (password.equals(accounts[i][1]))) 
            return true;
    }
    return false;
}

答案 1 :(得分:0)

你的for循环应该反过来看看下面的

public class Users {
private String username;
private String password;
private String[][] accounts = { { "user1", "pass1" }, { "user2", "pass2" } };

public Users(String username, String password) {
    this.username = username;
    this.password = password;
}

public boolean check() {

    for (int i = 0; i < accounts.length; i++) {
        if ((!username.equals(accounts[i][0]))||(password.equals(accounts[i][1]))) 
            return false;

    }
 return true;
} 

}

好的,让我们谈谈为什么? 你说有时你会有一个大数组,所以如果出错了就没有必要继续循环,如果有错误的数据,它会立即返回false,否则它将返回true;

<强>更新 如果您的循环与您所做的一样,那么您正在检查第一个结果是否正确 这就是我颠倒循环的原因

答案 2 :(得分:0)

boolean method() { // please note: when this method is called

  int i; // it executes this line

    for(i=0; i<10; i++){  // then it executes this line
       // while this loop is executing it also executes return false statement
        if(i==8){
           return true;
        }
    }

     return false;// then it executes this line

//therefore the boolean value will be false. i mean the returned boolean value and //then it returns true;
}

请澄清我的理解是否错误?