说我有这部分代码:
for(int i = 0; i < accounts.size(); i++) {
if(UserID.equals(accounts.get(i).getUserID())) {
if(accounts.contains(accounts.get(i))) {
if(UserPass.equals(accounts.get(i).getPassword())) {
System.out.println("True");
}
} else {
typePhrase("unrecognised userID: '" + UserID + "'");
}
} else {
typePhrase("unrecognised userID: '" + UserID + "'");
}
}
Run Code Online (Sandbox Code Playgroud)
它通过一个填充了对象的arrayList,它有一个ID和一个密码.我从用户那里得到两个输入,一个是userID,另一个是密码.我想要的是它通过该arrayList中保存的每个可能的对象,如果找到匹配,打印true到控制台,我遇到的问题是,如果你键入错误,它会打印一个消息,它无法识别arrayList中的每个对象.如果在右侧键入一个对象,它还会为arrayList -1中的每个对象打印消息.你有什么建议我这样做?
用户类:
public class User {
String userID;
String password;
public User(String ID, String Pass) {
userID = ID;
password = Pass;
}
public String getUserID() {
return userID;
}
public String getPassword() {
return password;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
ArrayList<User> accounts = new ArrayList<User>();
Run Code Online (Sandbox Code Playgroud)
您应该在User类中实现equals方法:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
if (!getUserID().equals(user.getUserID())) return false;
return getPassword().equals(user.getPassword());
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用键入的信息创建一个新用户,并检查列表是否包含此用户:
User user = new User("typedUserId", "typedPassword");
System.out.println(accounts.contains(user));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |