猿问

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

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("用户名不存在,请重新输入");
          }
    }  
    }
}

董壮
浏览 1070回答 3
3回答

xixiyingyi

 //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 {     //匹配成功咯 }

xixiyingyi

或者在User类里面,重写equals方法~~
随时随地看视频慕课网APP

相关分类

Java
我要回答