java——模拟新浪微博用户注册
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——模拟新浪微博用户注册的更多相关文章
- Java模拟新浪微博登陆抓取数据
前言: 兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先: 要想登陆新浪微博需要 ...
- 杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例
案例设计背景介绍: 编写一个新浪微博用户注册的程序,要求使用HashSet集合实现. 假设当用户输入用户名.密码.确认密码.生日(输入格式yyyy-mm-dd为正确).手机号码(手机长度为11位,并 ...
- [Javascript] 爬虫 模拟新浪微博登陆
概述: 由于业务需要,要编写爬虫代码去爬去新浪微博用户的信息. 虽然在网上能找到不少信息,但由于新浪微博改版,其登陆机制进行了修改,故很多老的文章就不适合用了. 经过一番摸索,成功模拟新浪微博的登陆 ...
- java模拟post请求发送json
java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求, 方法一: package main ...
- java 模拟qq源码
java 模拟qq源码: http://files.cnblogs.com/files/hujunzheng/QQ--hjzgg.zip
- java模拟开锁
java模拟开锁 service qq:928900200 Introduction to Computer Science II: CSCI142Fall 2014Lab #1Instructor: ...
- Jsoup实现java模拟登陆
Jsoup实现java模拟登陆 2013-10-29 14:52:05| 分类: web开发|举报|字号 订阅 下载LOFTER我的照片书 | 1:如何获取cookies. 1.1 ...
- 模拟新浪微博textarea,刷新页面输入信息保留
今天我们的产品经理提出一个新需求,模拟新浪微博textarea框,输入内容刷新页面保留信息. 我是用的方法是Html5 LocalStorage存储的,开始计划用cookie.或mysql存储,尝试了 ...
- [Java] 模拟HTTP的Get和Post请求
在之前,写了篇Java模拟HTTP的Get和Post请求的文章,这篇文章起源与和一个朋友砍飞信诈骗网站的问题,于是动用了Apache的comments-net包,也实现了get和post的http请求 ...
随机推荐
- INT 21H 指令说明及使用方法
很多初学汇编语言的同学可能会对INT 21H这条指令感到困惑,不知道是什么意思,下面就以一段简单的程序为大家讲解: 例如:需要键盘输入,并且回显. AH的值需要查表取得,表在下面 指令: M ...
- 使用Visual Studio进行单元测试-Part4
本文主要介绍Visual Studio(2012+)单元测试框架的一些技巧: 如何模拟类的构造函数 优化代码,便于测试 一.如何模拟类的构造函数 1.1 被测代码 基础代码,IShape分别有Rect ...
- Qt安装与配置
安装Qt 安装Qt Creator,打开终端执行如下命令: sudo apt-get install qt5-default qtcreator -y 安装Qt示例和文档: sudo apt-get ...
- js字符串API
1.charAt(n) :返回字符串n位置的字符 2.substr(n,m):n:开始截取的位置 m:截取的长度 2.substring(n,m):n:开始截取的位置 m:截取结束的位置 3.repl ...
- 杂项:grunt-tmod
ylbtech-杂项:grunt-tmod 前端模板预编译工具 tmodjs 的grunt自动化插件. 1.返回顶部 1. grunt-tmod 前端模板预编译工具 tmodjs 的grunt自动化插 ...
- 配置IIS服务:无法找到该页 您正在搜索的页面可能已经删除、更名或暂时不可用。
1.配置IIS服务器时,在默认网站创建虚拟目录XXX.然后右击启动页面.aspx,“浏览” 2. 出现错误: 无法找到该页 您正在搜索的页面可能已经删除.更名或暂时不可用. ------------ ...
- delphi 线程教学第三节:设计一个有生命力的工作线程
第三节:设计一个有生命力的工作线程 创建一个线程,用完即扔.相信很多初学者都曾这样使用过. 频繁创建释放线程,会浪费大量资源的,不科学. 1.如何让多线程能多次被复用? 关键是不让代码退出 ...
- springMVC绑定json参数之二(2.2.4)
二.springmvc 接收不同格式的json字符串 4).格式四:json传递复杂对象(对象中有属性,还有List,这里验证数组接收,不用List,其他的和上一节不变) 测试一: Test对象属性如 ...
- linux命令-任务计划-cron
任务计划,有时间规律的执行某些事情. 查看任务计划:crontab -l 指定用户:crontab -l -u 用户名 该用户没有任务计划. 自定义任务计划 进入一个操作和vim类似的界面 用空格分 ...
- Linux下压缩/解压
Linux下各种压缩包的解压方法 作者:intq 时间:2009-9-25 文章来源:来自网络 ---------------------------------------------------- ...