为了账号安全,请及时绑定邮箱和手机立即绑定

利用集合实现注册登录,如何遍历集合,判断对错。

利用集合实现注册登录,如何遍历集合,判断对错。

董壮 2018-12-17 10:09:17
package Menu;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.Scanner;public class UserDao {   //用户的数据都储存到该集合中    private static ArrayList<User> users =new ArrayList<User>();   //注册    public void reg() {        Scanner scanner =new Scanner(System.in);        String userName =null;        while(true) {            System.out.println("请输入用户名:");            userName =scanner.next();            //用户名首位不能以数字开头, 6位英文字母与数组组成            if(userName.matches("[a-zA-Z][a-zA-Z0-9]{5}")){                     break;            }else{                 System.out.println("用户名不符合规则");            }    }    String password =null;    while(true) {        System.out.println("请输入密码:");        password = scanner.next();        if(password.matches("\\d{6}")) {            break;        }else {            System.out.println("密码不符合规则");        }    }    //使用新注册的信息生产一个用户对象    User user =new User(userName,password);    users.add(user);    System.out.println("注册功能...");    System.out.println("当前用户有:"+users);    }    //登录    public void login() {                     while(true) {                          Scanner scanner =new Scanner(System.in);              System.out.println("请输入用户名:");              String userName =scanner.next();              if(users.contains(new User(userName,null))) {                                System.out.println("请输入密码:");              Scanner scanner1 = new Scanner(System.in);              String password = scanner1.next();                           Iterator it = users.iterator();              while(it.hasNext()) {                  User u = (User) it.next();                  if(password.equals(u.getPassword())) {                                          System.out.println("登录成功,欢迎登录图书管理系统!");                        break;                                    }              }                            }else {             System.out.println("用户名不存在,请重新输入");          }    }      }}
查看完整描述

3 回答

已采纳
?
xixiyingyi

TA贡献18条经验 获得超19个赞

 //if(users.contains(new User(userName,null))) {

这里有问题,你这条代码应该是想判断登陆时候输入的用户是否存在与list里面,但是这条语句写得不对,上面那句话底层是  new user().equals(user)~~,这样子肯定比较不了的。

你可以试试这样,循环这个List<User> users   然后拿它里面的每一个user的userName 和登陆输入的比较~~

即:

int flag = 0;//标记是否匹配成功
for(User user : users) {
    if (user.getUserName.equals(userName)) {
        //就是存在啦
        
        //然后比较密码
        if (user.getPassword().equals(password)) {
            //就是密码正确啦
            flag = 1;
            //既然正确了,那下面就不用继续比较下去了,break 即可
        }
    }
}
if (flag == 0) {
    //如果遍历完了还是没有,那就不存在啦
} else {
    //匹配成功咯
}


查看完整回答
反对 回复 2018-12-19
?
xixiyingyi

TA贡献18条经验 获得超19个赞

或者在User类里面,重写equals方法~~

查看完整回答
反对 回复 2018-12-19
  • 3 回答
  • 0 关注
  • 1035 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信