package Menu;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.Scanner;public class UserDao {?? //用戶的數(shù)據(jù)都儲存到該集合中?? ?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();?? ??? ??? ?//用戶名首位不能以數(shù)字開頭, 6位英文字母與數(shù)組組成?? ??? ??? ?if(userName.matches("[a-zA-Z][a-zA-Z0-9]{5}")){?? ??? ????????????? break;?? ??? ??? ?}else{?? ??? ??? ??? ? System.out.println("用戶名不符合規(guī)則");?? ??? ??? ?}?? ?}?? ?String password =null;?? ?while(true) {?? ??? ?System.out.println("請輸入密碼:");?? ??? ?password = scanner.next();?? ??? ?if(password.matches("\\d{6}")) {?? ??? ??? ?break;?? ??? ?}else {?? ??? ??? ?System.out.println("密碼不符合規(guī)則");?? ??? ?}?? ?}?? ?//使用新注冊的信息生產(chǎn)一個用戶對象?? ?User user =new User(userName,password);?? ?users.add(user);?? ?System.out.println("注冊功能...");?? ?System.out.println("當(dāng)前用戶有:"+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("登錄成功,歡迎登錄圖書管理系統(tǒng)!");??????????????????????? break;?? ??????? ??? ? ??? ??????? ??? ?? }?? ?????????? }?? ????????? ??? ?????????? }else {?? ????????? System.out.println("用戶名不存在,請重新輸入");????????? }?? ?} ??? ?}}
3 回答
已采納

xixiyingyi
TA貢獻(xiàn)18條經(jīng)驗 獲得超19個贊
?//if(users.contains(new?User(userName,null)))?{
這里有問題,你這條代碼應(yīng)該是想判斷登陸時候輸入的用戶是否存在與list里面,但是這條語句寫得不對,上面那句話底層是? new user().equals(user)~~,這樣子肯定比較不了的。
你可以試試這樣,循環(huán)這個List<User> users? ?然后拿它里面的每一個user的userName 和登陸輸入的比較~~
即:
int?flag?=?0;//標(biāo)記是否匹配成功 for(User?user?:?users)?{ ????if?(user.getUserName.equals(userName))?{ ????????//就是存在啦 ???????? ????????//然后比較密碼 ????????if?(user.getPassword().equals(password))?{ ????????????//就是密碼正確啦 ????????????flag?=?1; ????????????//既然正確了,那下面就不用繼續(xù)比較下去了,break?即可 ????????} ????} } if?(flag?==?0)?{ ????//如果遍歷完了還是沒有,那就不存在啦 }?else?{ ????//匹配成功咯 }
添加回答
舉報
0/150
提交
取消