A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 赵涛涛 于 2015-1-4 21:46 编辑

首先,我先附上数组使用的代码,主要功能是实现登陆判断和注册操作
  
  1. // 定义静态的User类型数组,用来存放已经注册的账户信息
  2.     private static User[] users = new User[5];
  3.     // 定义静态的index,用来计数注册次数(目前设定只存储5个账号信息)
  4.     private static int index = 0;

  5.     @Override
  6.     public boolean islogin(String username, String password) {
  7.         /**
  8.          * 主要思路:遍历对象数组,主要判断输入的账号密码是否与对象中的账号密码相匹配
  9.          */
  10.         //定义flag变量,存储登陆判断结果
  11.         boolean flag = false;
  12.         // 遍历users数组
  13.         for (int i = 0; i < users.length; i++) {
  14.             // 创建user对象,方便操作
  15.             User user = users;
  16.             // 判断程序缓存中是否存在注册信息
  17.             if (user != null) {
  18.                 // 判断输入的账号密码是否与存储的相匹配
  19.                 if (user.getUsername().equals(username)
  20.                         && user.getPassword().equals(password)) {
  21.                     System.out.println("登陆成功");
  22.                     //给flag重新赋值true
  23.                     flag = true;
  24.                     //结束循环
  25.                     break;
  26.                 }
  27.             }
  28.         }

  29.         return flag;
  30.     }

  31.     @Override
  32.     public void register(User user) {
  33.         //接收传递过来的user对象,然后将对象作为一个参数,赋值给users数组,上限是5个
  34.         users[index++] = user;
复制代码
同样的功能,我用集合实现,遇到了一点问题,代码如下:
  1. // 创建集合对象
  2.         // list用于存储用户登录时输入的信息,所以不需要静态处理,每次使用完毕后都初始化
  3.         public static ArrayList<User> list = new ArrayList<User>();
  4.         // newlist用于存储用户注册的登陆信息,需要静态处理,以保证数据在程序运行时都有效
  5.         public static ArrayList<User> newlist = new ArrayList<User>();

  6.         public boolean login(User s) {
  7.                 // 定义boolean变量,存储结果
  8.                 boolean falg = false;

  9.                 // 添加元素
  10.                 list.add(s);

  11.                 // 遍历集合
  12.                 Iterator<User> it = list.iterator();
  13.                 while (it.hasNext()) {

  14.                         User user = (User) it.next();

  15.                         if (newlist.contains(user)) {
  16.                                 falg = true;
  17.                         }
  18.                 }

  19.                 return falg;
  20.         }

  21.         public void register(User s) {

  22.                 // 添加元素
  23.                 newlist.add(s);
  24.         }
复制代码

运行后,出现的结果如下:
1图是注册信息

2、错误账号密码登录

3、正确的账号密码登陆

4、错误的账号密码登陆


结果是错误的账号密码也可以登录了,求指正!

2 个回复

倒序浏览
根据你的结果来看,只要账号在newlist里面存在,不管密码是不是对的,都可登陆,你的contain()有问题。
contain( )的底层是equals()方法,你的User类里面是怎么重写equals方法的?
回复 使用道具 举报
好厉害  ,完全看不懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马