2 qq 31930741 qq_31930741 于 2016.04.16 21:26 提问

java 为什么登录这个功能判断不了用户名重复,求解,谢谢!

public void reg(String name,String password){
//添加管理员
if(list.isEmpty()){
list.add(new User("admin","123456"));
}
//把输入的用户名给user
for(int i=0;i<list.size();i++){
if(list.contains(name)){
System.out.println("此用户已被注册,请重新输入!");
System.out.println("请输入用户名:");
name=sc.next();
System.out.println("请输入密码:");
password=sc.next();
}
}
user.setName(name);
user.setPassword(password);//把用户输入的密码给user
list.add(user);
System.out.println("注册成功!!!");
System.out.println("您当前的注册的用户是:"+user);
System.out.println();

    每次添加重复的用户名都显示添加成功,这是为什么呢?麻烦大家了

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.16 21:29
已采纳
 因为你list是user类型的,contains比较的是引用。
Boolean eu = false;
for(int i=0;i<list.size();i++){
if (list[i].getName.equals(name)){
eu = true;
break;
}
}
if (eu)
System.out.println("此用户已被注册,请重新输入!");
caozhy
caozhy 如果你用的是arraylist的非泛型版本,需要一个类型转换((User)list[i]).getName()
一年多之前 回复
qq_31930741
qq_31930741 刚刚我用你的方法那个list[i]报错,也出不来list[i].getName()
一年多之前 回复
qq_31930741
qq_31930741 bl=false; //添加管理员 if(list.isEmpty()){ list.add(new User("admin","123456")); } Iterator<User> it=list.iterator(); while(it.hasNext()){ User u=it.next(); if(u.getName().equals(name)){ bl=true; } } if(bl){ System.out.println("此用户已被注册,请重新输入!"); } else{ user.setName(name); user.setPassword(password);//把用户输入的密码给user list.add(user); System.out.println("注册成功!!!"); System.out.println("您当前的注册的用户是:"+user); System.out.println(); } 我现在用的是这种方法
一年多之前 回复
caozhy
caozhy 回复从容_: 是的,但是你list里面装的是user
一年多之前 回复
qq_31930741
qq_31930741 回复caozhy: 我的list不是user类型的,list是一个集合
一年多之前 回复
caozhy
caozhy if (list[i].getName().equals(name)){ 少了一个括号
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.16 21:32

ThinkPHP——登录功能用户名密码判断
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!