嘿我正在尝试在一个应该返回布尔值的方法中执行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;
}
}
}
答案 0 :(得分:5)
如果false
数组中的第一个条目与accounts
和username
不匹配,您目前正在返回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;
}
请澄清我的理解是否错误?