今天花了一个小时左右用List做出来登陆注册功能,做的过程中主要遇到了以下问题:
1 . 注册功能时,遍历集合是否含有此账号,使用了迭代器,发现逻辑方面很难实现,最后想到了集合的contains方法,就方便了许多。
2 . 对于一个变量的使用特别关键,尤其是boolean类型的变量,可以省下好多事情。
3 .做完后,发现这个题用set更方便,因为set是无序且不可重复的,不需要判断集合是否被注册。
4 . 对迭代器的掌握一定要熟悉,明白各个实现类的底层是如何实现的。
下面放出我的代码,希望各位大佬指正,谢谢。
用户类
class User{
int id;
String password;
public User(int id,String password){
this.id = id;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public boolean equals(Object obj) {
User user = (User)obj;
return this.id==user.id;
}
@Override
public String toString() {
return "{账号:"+this.id+" 密码:"+this.password+"}";
}
}
登录
private static void DengLu(){
while(true) {
System.out.println("请输入账号:");
int id = in.nextInt();
System.out.println("请输入密码:");
String password = in.next();
Iterator it = users.iterator();
boolean isLogin = false;
while (it.hasNext()) {
User user = (User) it.next();
if (user.id == id && user.password.equals(password)) {
isLogin = true;
}
}
if(isLogin){
System.out.println("登陆成功!");
break;
}else{
System.out.println("账号或者密码错误,请重新登录!");
}
}
}
注册
private static void ZhuCe(){
User user;
while(true) {
System.out.println("请输入账号:");
int id = in.nextInt();
user = new User(id, null);
if (users.contains(user)) {
System.out.println("该账号已经被注册,请重新输入!");
} else {
break;
}
}
System.out.println("请输入密码:");
String password = in.next();
user.setPassword(password);
users.add(user);
System.out.println("注册成功");
System.out.println("已注册的用户:"+users);
}
主函数
static Scanner in = new Scanner(System.in);
static Collection users = new ArrayList();
public static void main(String[] args) {
while(true) {
System.out.println("请选择 (A):登录 (B):注册");
String option = in.next();
if ("a".equalsIgnoreCase(option)) {
DengLu();
} else if ("b".equalsIgnoreCase(option)) {
ZhuCe();
} else {
System.out.println("选择错误,请重新输入!");
}
}
}
本文分享了作者使用List实现登录注册功能的经验。在实现过程中,通过使用集合的contains方法解决了遍历检查账号的难题,并强调了boolean变量的重要性。作者还提到,尽管List能完成任务,但Set在处理注册功能时更为合适,因为它确保了账号的唯一性。此外,作者认识到熟练掌握迭代器的使用对于理解其底层实现至关重要。

1万+

被折叠的 条评论
为什么被折叠?



