静态方法仅识别首个User对象,其他用户登录验证失败求助
你的静态登录验证方法的问题根源与修复方案
嘿,我一眼就看到问题出在哪儿了——你的循环逻辑写反啦!
你看,现在的代码里,只要遍历到的第一个用户和输入的账号密码不匹配,就直接跳进else分支抛出异常,循环直接终止了,后面的User2根本没机会被检查到!这就是为什么只有第一个User1能通过验证,用User2的账号密码就直接触发异常的原因。
修复后的静态方法代码
public static boolean verifyLoginByUsernameAndPassword(ArrayList<User> userList, String username, String password) { // 先遍历所有用户找匹配项 for(User s : userList) { if(username.equals(s.getUserName()) && password.equals(s.getPassWord())) { // 找到匹配的直接返回true return true; } } // 遍历完所有用户都没匹配到,再抛出异常 throw new IllegalArgumentException("Username and password are incorrect "); }
逻辑说明
- 遍历整个用户列表,逐个检查账号密码是否匹配
- 一旦找到匹配的用户,立刻返回
true,结束方法 - 只有当所有用户都检查完,完全没有匹配项的时候,才抛出异常
这样修改后,不管User2在列表的哪个位置,都会被正常检查到,不会再出现只认第一个用户的问题啦。另外提个小建议:参数名user改成userList会更直观,和主方法里的变量名保持一致也更易读~
内容的提问来源于stack exchange,提问作者awyeanah2
相关产品推荐
相关产品推荐

