gpt4 book ai didi

java - ArrayList 字符串比较

转载 作者:行者123 更新时间:2023-11-30 03:38:41 28 4
gpt4 key购买 nike

我创建了一个 ArrayList 来保存用户创建的“帐户”。我现在正在尝试编写一个“登录”函数,该函数循环遍历 ArrayList 并根据帐户 ArrayList 中已存在的帐户检查用户输入。这是我的循环;

for(UserInfo createdUser : auctionAccounts){
if(enteredUser.equals(createdUser.userName) && enteredPass.equals(createdUser.passWord)){
System.out.println("Welcome: " +createdUser.userName);
returnToMenu();
}else{
System.out.println("Username or Password is wrong!");
loginAccount(aI);
}
}

如果 ArrayList 中只有一个帐户,这绝对可以正常工作。但是,当列表中有多个帐户时,我只能登录第一个帐户,之后就不能登录了。

我还尝试使用 ArrayList.contains() 方法而不是 .equals(),但这会产生相同的结果。

编辑:只是添加,这就是我创建帐户的方式;

UserInfo createdUser = new UserInfo();

System.out.println("---- Enter a username ----");
createdUser.setUsername(scanner.next());

System.out.println("---- Enter a password ----");
createdUser.setPass(scanner.next());

this.aI.createAccount(createdUser);
accountHandler(aI);

最佳答案

您应该做的第一件事是删除循环中尝试匹配用户名和密码的 else 部分。

原因是,您并不真正知道用户名/密码组合是否错误直到您检查整个列表

但是,如果用户输入的内容与列表中的第一个用户不匹配,您就会告诉用户他们输入了错误的信息。

本质上,每次用户尝试登录时,您都必须遍历整个列表,然后确定他们是否输入了正确的信息,因为您必须尝试将他们与每个现有用户进行匹配。

您的代码如下所示:

for(UserInfo createdUser : auctionAccounts){
if(enteredUser.equals(createdUser.userName) && enteredPass.equals(createdUser.passWord)){
System.out.println("Welcome: " +createdUser.userName);
returnToMenu();
}
}
// if this point is reached, then username and pw are invalid
System.out.println("Username or Password is wrong!");

如果您不想在用户每次尝试登录时迭代整个列表(因为这对于足够多的用户来说可能效率很低),您可以使用某种 Map 将用户名与正确的密码联系起来。这将允许您快速查找表并消除所有用户的迭代:

Map<String, UserInfo> auctionAccounts;
// initialization, your other code ...
if(auctionAccounts.get(enteredUser) != null && // user with entered username exists
auctionAccounts.get(enteredUser).password.equals(enteredPass) { // entered password is correct
// SUCCESSFULL LOGIN
} else {
// INVALID USERNAME or PASSWORD
}

关于java - ArrayList 字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27253864/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com