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. VBS错误代码释义

    VBScript 语法错误 如果 VBScript 语句结构违反了一个或多个 VBScript 脚本语言语法规则,就会产生 VBScript 语法错误.VBScript 语法错误通常在执行程序前,编译 ...

  2. oracle 12c 列式存储 ( In Memory 理论)

    随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用:列形式保存的数据满足以 ...

  3. POJ2442:Sequence

    浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=2442 我们先简化题意,假设只有两 ...

  4. ES6学习之Generator函数

    概念:可以把Generator 函数理解成状态机(封装了多个内部状态)或者是一个遍历器对象生成函数 写法:Generator函数的定义跟普通函数差不多,只是在function关键字后面加了一个星号 f ...

  5. POST-GET请求

    在应用中最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet.post与get的不同之处在于post的参数不是放在URL字串里面 ...

  6. ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案

    这是因为路径问题,可以在jsp/config.json这个文件去改路径 通过“imageUrlPrefix”与“imagePathFormat”这两个属性去拼凑路径. “imageUrlPrefix” ...

  7. 【总结整理】JQuery基础学习---事件篇

    jQuery鼠标事件之click与dbclick事件 用交互操作中,最简单直接的操作就是点击操作.jQuery提供了两个方法一个是click方法用于监听用户单击操作,另一个方法是dbclick方法用于 ...

  8. 深入学习JavaScript: apply 方法 详解

    我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...

  9. [转]成为优秀Java程序员的10大技巧

    转自:http://www.codeceo.com/article/10-good-java-programmer-tips.html Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开 ...

  10. 小小c#算法题 - 6 - 快速排序 (QuickSort)

    快速排序是排序算法中效率比较高的一种,也是面试常被问到的问题. 快速排序(Quick Sort)是对冒泡排序的一种改进.它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字 ...