java模仿微博代码_杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例
案例设计背景介绍:
编写一个新浪微博用户注册的程序,要求使用HashSet集合实现。
假设当用户输入用户名、密码、确认密码、生日(输入格式yyyy-mm-dd为正确)、手机号码(手机长度为11位,并且以13、15、17、或18开头的手机号为正确)、
邮箱(包含符号“@”为正确)信息之后,判断信息是否输入正确,
正确校验用户是否重复注册,如果不是重复注册,则注册成功。
案例效果预览图:
注册成功:
注册失败:
失败1:
失败2:
失败3:
案例设计代码:
本案例共设计到3个类,用户实体类、用户注册类、用户信息校验类。
用户注册类:
packagecn.javabs.setdemo;importjava.util.HashSet;importjava.util.Scanner;/*** Date:2018-05-14
*@authorMryang
*
*
*思路分析:
1.为了便于存储用户信息,需要创建一个用户类,在类中重写其中的HashCode()方法,
其返回用户名的哈希值,再重写equals()方法,来比较对象的用户名属性是否相等。
2.有了用户类之后,再需要1一个用户注册类来模拟注册信息,
该类中可以用HashSet集合来创建一个数据列表,然后向列表中添加两条初始注册信息。
3.从控制台获取用户填写信息,可以通过Scanner类的nextLine()方法来实现,获取后,需要将获取的信息校验。
4.校验信息可以创建一个检验类,在类中实现用户输入的信息的方法。
检验结束后,如果检验结果错误就直接返回错误信息,
这里可以声明一个检验结果变量和一个检验状态变量。
检验结果变量用于存储提示信息,检验状态变量用于存储结果的判断标识。
5.当用户输入的信息不满足格式时,需要修改变量1状态并存储错误信息。
6.判断校验状态,如果所有信息都通过校验,则将用户信息创建成为用户对象,
通过将对象添加到用户列表返回结果来判断用户名是否重复,并记录下返回结果信息。*/
public classUserRegister {public static HashSet USER_DATE =new HashSet();public static voidmain(String[] args) {
initData();//初始化人员信息
Scanner scanner = newScanner(System.in);
System.out.print("请输入用户名:");
String userName= scanner.nextLine(); //获取用户名
System.out.print("请输入登录密码:");
String password= scanner.nextLine(); //获取登录密码
System.out.print("请重复密码:");
String rePassword= scanner.nextLine(); //获取重复密码
System.out.print("出生日期:");
String birthday= scanner.nextLine(); //获取出生日期
System.out.print("请输入手机号:");
String telNumber= scanner.nextLine(); //获取手机号
System.out.print("请输入邮箱:");
String email= scanner.nextLine(); //获取邮箱账号//校验信息,返回登录状态信息
CheckInfo checkInfo = newCheckInfo(USER_DATE);
String result=checkInfo.checkAction(userName,password,rePassword,birthday,telNumber,email);
System.out.println("注册结果:"+result);
}/*** 初始化数据
* 已经存在的用户*/
private static voidinitData() {
User user1= new User("小明", "123456", "1998-02-06", "18810319240", "2690582170@qq.com");
User user2= new User("小王", "654321", "1997-01-01", "15379648332", "1234567890@qq.com");
USER_DATE.add(user1);
USER_DATE.add(user2);
}
}
用户实体类
packagecn.javabs.setdemo;/*** 用户类*/
public classUser {private String userName ; //用户名
private String password ; //密码
private String birthday ; //生日
private String telNumber ; //手机号
private String email ; //邮箱
publicUser(){
}publicUser(String userName, String password, String birthday, String telNumber, String email) {super();this.userName =userName;this.password =password;this.birthday =birthday;this.telNumber =telNumber;this.email =email;
}
@Overridepublic inthashCode() {final int prime = 31;int result = 1;
result= prime * result + ((userName == null) ? 0: userName.hashCode());returnresult;
}
@Overridepublic booleanequals(Object obj) {if (this ==obj)return true;if (obj == null)return false;if (getClass() !=obj.getClass())return false;
User other=(User) obj;if (userName == null) {if (other.userName != null)return false;
}else if (!userName.equals(other.userName))return false;return true;
}
}
注册用户信息校验类
packagecn.javabs.setdemo;importjava.text.DateFormat;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.HashSet;/***@authorMrYang
*@version创建时间:2018年5月14日
**/
/*** 校验信息类*/
public classCheckInfo {public static HashSet USER_DATE = new HashSet();public CheckInfo(HashSetUSER_DATE) {this.USER_DATE =USER_DATE;
}//校验用户信息返回登录状态
publicString checkAction(String userName, String password, String rePassword, String birthday, String telNumber,
String email) {
StringBuilder result= new StringBuilder(); //字符串构造器//1 代表成功 ,2 代表失败
int state = 1;//密码判断
if (!password.equals(rePassword)) {
System.out.println("两次输入的密码不一致! \r\n");
state= 2;
}//生日判断
if (birthday.length() != 10) {
System.out.println("生日格式不正确!\r\n");
state= 2;
}else{for(int i=0;i
Character thisChar=birthday.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 (telNumber.length()!=11) {
result.append("手机号码不正确!\r\n");
state=2;//默认有效手机号为13,15,17和18开头的手机号
}else if (!(telNumber.startsWith("13")||telNumber.startsWith("15")||telNumber.startsWith("17")|| telNumber.startsWith("18"))) {
state= 2;
}//邮箱判断
if (!email.contains("@")) {
result.append("邮箱不正确!\r\n");
state= 2;
}//如果以上信息都校验无误,则将新用户加入到集合
if (state ==1) {//格式化日期返会Date 对象
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date dateBirthday= null;try{
dateBirthday= format.parse(birthday);//parse()从给定的字符串开始解析文本,以生成一个日期。
} catch(ParseException e) {
e.printStackTrace();
}
User newUser= newUser(userName, password, birthday, telNumber, email);//将新用户添加到列表中,同时根据HashSet判断出用户名是否重复
if (!USER_DATE.add(newUser)) {
result.append("用户重复!");
state= 2;
}if (state ==1) {
result.append("注册成功!");
}
}return result.toString();//toString()方法: 将指定的数据以字符串形式返回。
}
}
作者: 杨校
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。
java模仿微博代码_杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例相关推荐
- 杨老师课堂_Java核心技术下之控制台模拟文件管理器案例
背景需求介绍: 编写一个模拟文件管理器的程序,实现控制台对文件和文件夹的管理操作. 要求在此程序中: 当用户输入指令 1 时,代表"指定关键字检索文件",此时需要用户输入检索的目录 ...
- 杨老师课堂_Java核心技术下之控制台模拟记事本案例...
预览效果图: 背景介绍: 编写一个模拟记事本的程序通过在控制台输入指令,实现在本地新建文件打开文件和修改文件等功能. 要求在程序中: 用户输入指令1代表"新建文件",此时可以从控制 ...
- 杨老师课堂之网页制作HTML的学习入门-含有案例
网页制作入门 - Html的学习 本篇所授任务 网站信息页面案例 网站图片信息页面案例 网站友情链接页面案例 网站首页案例 网站注册页面案例 网站后台页面案例 教学导航 教学目标 了解什么是标记语言 ...
- 杨老师课堂_Java教程第一篇之认识计算机
1了解计算机基础知识之计算机概述 A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. ...
- 杨老师课堂_Java教程第六篇之引用数据类型_类的运用
今天主要是讲解以下知识点: 1.自定义类型的定义及使用 2.自定义类的内存图 3.ArrayList集合的基本功能 4.王者荣耀随机迎战案例及库存案例代码优化 01引用数据类型_类 * A: 数据类型 ...
- 杨老师课堂_Java教程第四篇之数组运用
今天主要是讲解以下知识点: 1.流程控制语句switch 2.数组 3.王者荣耀英雄随机出战案例 01switch语句解构 * A:switch语句解构* a:switch只能针对某个表达式的值作出判 ...
- 杨老师课堂_Java教程第五篇之函数运用
今天主要是讲解以下知识点: 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法(函数)* 提高代码的复用性 * B: 什么是方法* 完成特定功能的代码块. 02 ...
- 台州杨老师课堂 UI设计培训班
课程内容 一.图形界面设计基础 1.Photoshop 应用 通过各种不同风格网页整体GUI设计,掌握photoshop相关软件操作基础,熟练使用更重要是学会直接应用软件,通过项目实训直接设计. 2. ...
- 杨老师课堂_安卓教程第一篇之入门
1.1G-4G g:generation 代 3g:第三代移动通信技术1g: 大哥大特点:安全性差,容易受干扰,通话不稳定,不能发短信 2g:小灵通等功能机特点:通话质量稳定,可以发短信彩信,简单wa ...
最新文章
- META Header
- oracle中计算某月的天数
- 在eclipse中使用JDBC连接MySQL5.7.24
- munmap_chunk(): invalid pointer
- csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表
- 深度学习核心技术精讲100篇(六)-keras 实战系列之推荐系统FM(Factorization Machine)算法
- 关于USBOS V3.0 teamviewer13打开无反应的问题
- RabbitMQ在Windows环境下部署(简单有效)
- diff算法_Virtual Dom和Diff算法
- [翻译] 物理引擎javascript实现
- jquery-galleryview-2.0 漂亮多样化的图片特效(多项自定义)
- java随机点名器_基于JavaScript实现随机点名器
- CentOS7设置镜像源
- IDEA设置好看的字体
- iOS 一键加入QQ群
- Spring Boot基础学习笔记08
- NGUI-动画Tween
- Elasticsearch报错received plaintext traffic on an encrypted channel, closing connection Netty4TcpChann
- C语言半框,不同的镜架结构优劣大盘点
- 四个福利性在线网站分享,每一个都让你欲罢不能……
热门文章
- 解决$ is not defined 的几种方法
- FC200 长广防盗维修专家
- 有限元-朗格朗日和欧拉描述的区别
- MMDetection 基准测试 和 Model Zoo | 三
- 【LOJ574】「LibreOJ NOI Round #2」黄金矿工
- 热身赛T3(奖学金评定)
- unity3d.com国际版下载
- 我的.emacs配置(原生Emacs,不依赖任何插件)
- JavaScript (mp3、mp4、jpg、doc、txt、rar)单个、多文件批量下载
- 首个AI数字人唱作歌曲刷屏背后:百度APP数字人度晓晓用AI陪伴亿万用户