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();
}
}

java——模拟新浪微博用户注册的更多相关文章

  1. Java模拟新浪微博登陆抓取数据

    前言:  兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先:  要想登陆新浪微博需要 ...

  2. 杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例

    案例设计背景介绍: 编写一个新浪微博用户注册的程序,要求使用HashSet集合实现.  假设当用户输入用户名.密码.确认密码.生日(输入格式yyyy-mm-dd为正确).手机号码(手机长度为11位,并 ...

  3. [Javascript] 爬虫 模拟新浪微博登陆

     概述: 由于业务需要,要编写爬虫代码去爬去新浪微博用户的信息. 虽然在网上能找到不少信息,但由于新浪微博改版,其登陆机制进行了修改,故很多老的文章就不适合用了. 经过一番摸索,成功模拟新浪微博的登陆 ...

  4. java模拟post请求发送json

    java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求, 方法一: package main ...

  5. java 模拟qq源码

    java 模拟qq源码: http://files.cnblogs.com/files/hujunzheng/QQ--hjzgg.zip

  6. java模拟开锁

    java模拟开锁 service qq:928900200 Introduction to Computer Science II: CSCI142Fall 2014Lab #1Instructor: ...

  7. Jsoup实现java模拟登陆

    Jsoup实现java模拟登陆 2013-10-29 14:52:05|  分类: web开发|举报|字号 订阅     下载LOFTER我的照片书  |     1:如何获取cookies. 1.1 ...

  8. 模拟新浪微博textarea,刷新页面输入信息保留

    今天我们的产品经理提出一个新需求,模拟新浪微博textarea框,输入内容刷新页面保留信息. 我是用的方法是Html5 LocalStorage存储的,开始计划用cookie.或mysql存储,尝试了 ...

  9. [Java] 模拟HTTP的Get和Post请求

    在之前,写了篇Java模拟HTTP的Get和Post请求的文章,这篇文章起源与和一个朋友砍飞信诈骗网站的问题,于是动用了Apache的comments-net包,也实现了get和post的http请求 ...

随机推荐

  1. bzoj 2597 剪刀石头布 —— 拆边费用流

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2597 不合法的三个人之间的关系就是一个人赢了两次: 记 \( deg[i] \) 表示第 \ ...

  2. oracle rac搭建

    (一)环境准备 主机操作系统 windows10 虚拟机平台 vmware workstation 12 虚拟机操作系统 redhat 5.5 x86(32位) :Linux.5.5.for.x86. ...

  3. HDU1042(N!:设4为基数)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submi ...

  4. java基础知识(4)---设计模式

    设计模式:解决问题最行之有效的思想.是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. java中有23种设计模 ...

  5. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  6. asp中实现lable自动换行

    asp中实现lable自动换行 因为在用Label标签显示内容时,内容太多,想实现自动换行.我们知道在WINFORM中程序中,有一个属性是AUTOSIZE 改成FALSE 是可以实现的.但是在ASP. ...

  7. HTTP 400 错误 编译器错误消息: CS0016

    问题:运行程序时提示http 400错误 解决方法: 去掉勾 尝试将网页发布到本地IIS上,发现出现以下错误: 编译器错误消息: CS0016 解决编译器错误消息: CS0016:方法如下: 一般都是 ...

  8. CSS学习系列1 - CSS中的盒子模型 box model

    css中有一个盒子模型的概念. 主要是用来告诉浏览器如何来计算页面元素的宽度和高度, 比如该元素的宽度/高度 是否包括内边距,边框,外边距.  盒子模型有一个属性box-sizing属性来说明是否包括 ...

  9. hdu1067

    #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...

  10. 20169201 使用Metaspoit攻击MS08-067实验

    MS08-067漏洞介绍 MS08-067漏洞的全称为"Windows Server服务RPC请求缓冲区溢出漏洞",如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允 ...