1.创建用户类,重写HashCode()和equals()方法:

import java.util.*;
public class User{
private String name;
private String pwd;
private Date bd;
private String telNum;
private String email;
public User(){
}
public User(String name, String pwd, Date bd,
String telNum, String email){
this.name = name;
this.pwd = pwd;
this.bd = bd;
this.telNum = telNum;
this.email = email;
}
@Override
public int hashCode(){
return name.hashCode();
}
@Override
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj == null){
return false;
}
// getClass() 返回此 Object 的运行时的类。
if(getClass() != obj.getClass()){
return false;
}
//不这样会报错,obj是Object类,而Object类是所有类的父类,包括了User类,所以上一步即使相等,还是得强制转换成Object的子类User才行。 User other = (User) obj;
if(name == null){
if(other.name != null){
return false;
}
}else if(!name.equals(other.name)){
return false;
}
return true;
} }

2.创建用户注册类:

import java.util.*;
public class UserRegister{
public static HashSet<User> USER_DATA = new HashSet<User>();
public static void main(String[] args){
//initData();
Scanner scan = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = scan.nextLine();
System.out.println("请输入密码:");
String pwd = scan.nextLine();
System.out.println("请再次输入密码:");
String repwd = scan.nextLine();
System.out.println("请输入出生日期:");
String bd = scan.nextLine();
System.out.println("请输入手机号:");
String telNum = scan.nextLine();
System.out.println("请输入电子邮箱:");
String email = scan.nextLine();
CheckInfo checkInfo = new CheckInfo(USER_DATA);
String result = checkInfo.checkAction(name, pwd, repwd, bd, telNum, email);
System.out.println("注册结果:" + result);
}
// private static void initData(){
// User user1 = new User("张三", "123", "123", new Date(),
// "18812341234", "1123456@163.com");
// User user2 = new User("张六", "126", "126", new Date(),
// "18812341236", "66666666@163.com");
// USER_DATA.add(user1);
// USER_DATA.add(user2);
// }
}

3.创建校验信息类:

import java.util.*;
import java.util.*;
import java.text.*;
public class CheckInfo{
public static HashSet<User> USER_DATA = new HashSet<User>();
public CheckInfo(HashSet<User> USER_DATA){
this.USER_DATA = USER_DATA;
}
public String checkAction(String name, String pwd,
String repwd, String bd, String telNum, String email){
StringBuilder result = new StringBuilder();
int state = 1;
//密码判断
if(!pwd.equals(repwd)){
result.append("两次输入的密码不一样~\r\n");
state = 2;
}
//生日判断
if(bd.length() != 10){
result.append("生日格式不正确~\r\n");
state = 2;
}else{
for(int i=0; i<bd.length(); i++){
Character thisChar = bd.charAt(i);
if(i == 4 || i == 7){
if(thisChar != '-'){
result.append("生日格式不正确~\r\n");
state = 2;
}
}else{
if(!Character.isDigit(thisChar)){
result.append("生日格式不正确~\r\n");
state = 2;
}
}
}
}
//电话号码判断
if(telNum.length() != 11){
result.append("输入手机号不正确~\r\n");
state = 2;
}else{
for(int i=0; i<telNum.length(); i++){
Character thisChar = telNum.charAt(i);
if(!Character.isDigit(thisChar)){
result.append("输入手机号不正确~\r\n");
state = 2;
}else if(!(telNum.startsWith("13") ||
telNum.startsWith("15") ||
telNum.startsWith("18") ||
telNum.startsWith("17"))){
result.append("输入手机号不正确~\r\n");
state = 2;
}
}
}
//邮箱判断
if(!email.contains("@")){
result.append("邮箱不正确~\r\n");
state = 2;
}
if(state == 1){
//格式化日期返回对象
DateFormat format = new SimpleDateFormat ("yyyy-mm-dd");
Date datebd = null;
try {
datebd = format.parse(bd);
} catch (ParseException e){
e.printStackTrace();
}
User newUser = new User(name, repwd, datebd, telNum, email);
if(!USER_DATA.add(newUser)){
result.append("用户重复!");
state = 2;
}
if(state == 1){
result.append("注册成功!");
}
}
return result.toString();
}
}

最新文章

  1. JS中用new创建对象与不用new创建对象区别:
  2. Apache Shiro系列二,概述 —— 基本概念
  3. 8 HTML&amp;JS等前端知识系列之Ajax的例子
  4. 雷赛dmc2410控制卡,驱动器 光栅 加电机
  5. webapi支持跨域访问
  6. Android debug时一直处于waiting for debugger解决办法
  7. 调试压缩后的Javascript文件:在 Chrome 和 Safari ,选择“脚本”标签,找到相应的文件,然后点击“{}”图标(pretty print,在面板底部)
  8. bzoj1415
  9. C++转换函数
  10. Shell变量替换,命令替换,转义字符
  11. 聊聊Vue.js组件间通信的几种姿势
  12. numpy.random 常用函数详解之排列乱序篇(Permutations)
  13. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-12基于cookie登录授权认证并实现前台会员、后台管理员同时登录
  14. mysql自增长主键,删除数据后,将主键顺序重新排序
  15. okhttp post form表单
  16. 支付宝 生活号 获取 userId 和 生活号支付
  17. elasticsearch学习之根据发布时间设置衰减函数
  18. python-day74--知识总体总结
  19. C++ : 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo,onsizeonsizing
  20. Ubuntu 12.04 下 Sublime Text 3 Build 3047 破解

热门文章

  1. js代码--根据经纬度计算距离
  2. IP 地址漂移
  3. POJ 1503 Integer Inquiry(大数相加)
  4. CCS V5 使用教程一: 安装激活与创建工程
  5. Oracle---SQL子查询---详解
  6. VisualGDB系列5:使用VS来开发Linux程序
  7. linux日常管理-curl工具
  8. socket消息发送
  9. isPCR安装
  10. solr搜索应用