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 { //匹配成功咯 }
添加回答
举报
0/150
提交
取消