JAVA关于集合类小程序–模拟新浪用户注册

任务介绍:
编写一个模拟新浪微博用户注册的小程序,要求使用HashSet集合来实现。用户需要输入的有:用户名,密码、确认密码、生日(格式为:yyyy-mm-dd)、手机号码(长度为11位,并且以13、15、17、18开头)、邮箱(包含字符@),用户输入信息后判断信息是否正确,正确的要验证用户是否重复注册。
运行结果
实现代码
(1)创建用户类,并重写其HashCode()和equals()方法

package 集合任务;
import java.util.Date;public class user {private String userName;private String password;private Date birthday;private String telNumber;private String email;public user(String userName, String password, Date date, String telNumber, String email) {super();this.userName = userName;this.password = password;this.birthday = date;this.telNumber = telNumber;this.email = email;}//重写hashCode和equals方法@Overridepublic int hashCode() {return userName.hashCode();}@Overridepublic boolean equals(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;}
}

重写了HashCode()方法使其返回userName属性的哈希值,重写equals()方法用于比较userName属性是否相等,并返回结果。
(2)创建用户注册类,模拟注册信息

package 集合任务;import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;public class Xinlang {public static HashSet<user> USER_DATA = new HashSet<user>();//用户数据public static void main(String[] args) {initData();//初始化人员信息Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名:");String userName = scanner.nextLine();System.out.println("请输入密码:");String password = scanner.nextLine();System.out.println("请重复密码:");String repassword = scanner.nextLine();System.out.println("出生日期:");String birthday = scanner.nextLine();System.out.println("手机号码:");String telNumber = scanner.nextLine();System.out.println("电子邮箱:");String email = scanner.nextLine();//校验用户信息,返回登陆状态信息CheckInfo resultInfo = new CheckInfo(USER_DATA);String result = resultInfo.checkAction(userName, password, repassword, birthday, telNumber, email);System.out.println("注册结果:"+result);}//初始化数据,创建两个已存在的用户信息private static void initData() {user uer = new user("张三","zs,123",new Date(),"13369758242","zhangsan@itcast.cn");user uer2 = new user("李四", "ls,123", new Date(), "15123766651","lisi@itcast.cn");USER_DATA.add(uer);USER_DATA.add(uer2);}
}

(3)创建校验信息类

 package 集合任务;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;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 userName,String password,String repassword,String birthday,String phone,String email) {StringBuilder result = new StringBuilder();//1、代表成功 2、代表失败int state = 1;//密码判断if(!password.equals(repassword)) {result.append("两次输入密码不一致!\r\n");state = 2;}//生日判断if (birthday.length() != 10) {//字符串长度不为10,则认为格式错误result.append("生日格式不正确!\r\n");state = 2;}else {for (int i = 0; i < birthday.length(); i++) {Character thisChar = birthday.charAt(i);if (i == 4 || i == 7) {if (!(thisChar == '-')) {//验证第4位和第7位是否为符号“-”result.append("生日格式不正确!\r\n");state = 2;}}else {//验证除了第4位和第7位,其余是否位0~9的数字if (!(Character.isDigit(thisChar))) {result.append("生日格式不正确!\r\n");state = 2;}}}}//手机号判断if (phone.length() != 11) {//判断手机号 都是否等于11位result.append("手机号码不正确!\r\n");state = 2;}else if (!(phone.startsWith("13") || phone.startsWith("15") || phone.startsWith("17") || phone.startsWith("18"))) {result.append("手机号码不正确!\r\n");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);} catch (java.text.ParseException e) {// TODO: handle exceptione.printStackTrace();}user newUser = new user(userName, repassword, dateBirthday, phone, email);//将用户添加到列表中,同时可根据HashSet判断处用户名有没有重复if (!USER_DATA.add(newUser)) {result.append("用户重复!");state = 2;}if (state == 1) {result.append("注册成功!");}}return result.toString();}
}

函数说明
StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。

String.charAt(i)::charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

String.isDigit(char):用于判断指定字符是否为数字。如果字符为数字,则返回 true;否则返回 false。

String.startsWith(" "):用于检测字符串是否以指定的前缀开始。

String.contains(""):判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。

JAVA关于集合类小程序--模拟新浪用户注册相关推荐

  1. Java基于微信小程序的新冠疫苗预约小程序 springboot+vue+elementUI

    项目介绍 基于小程序的疫苗预约系统是计算机技术与疫苗管理相结合的产物,通过疫苗预约系统实现了对疫苗的高效管理.随着计算机技术的不断提高,计算机已经深入到社会生活的各个角落.而采用人工疫苗预约的方法,不 ...

  2. java ee的小程序_用微服务和容器替换旧版Java EE应用程序服务器

    java ee的小程序 Lightbend最近对2000多个JVM开发人员进行了一项调查,结果刚刚发布. 开展该调查的目的是发现:发展趋势与IT基础架构趋势之间的相关性,处于数字化转型前沿的组织如何使 ...

  3. java ee的小程序_Java EE调度程序

    java ee的小程序 Java EE应用程序服务器具有本机调度支持,并且在大多数应用程序中,不需要包括外部依赖项,例如著名的Quartz调度程序库. Java EE 6和7完整配置文件上提供的Jav ...

  4. java ee的小程序_在Java EE应用程序中实现自动重试

    java ee的小程序 最初,我想将此博客称为" 具有拦截器驱动的重试策略的灵活超时 ",但后来我认为它太"繁重". 该声明以及修改后的标题应该(希望)使您了解 ...

  5. java ee的小程序_Java EE 8 –为更多设备提供更多应用程序

    java ee的小程序 如果我不喜欢夏天的一件事,那就是事实是没有太多要分享或谈论的新闻. 谁决定将Java Day Tokyo置于今年的这个无聊的时间里,做得很好,并给了我一个写关于新的和即将到来的 ...

  6. java与微信小程序通讯_java与微信小程序实现websocket长连接

    本文实例为大家分享了java与微信小程序实现websocket长连接的具体代码,供大家参考,具体内容如下 背景: 需要在小程序实现地图固定坐标下实时查看消息 java环境 :tomcat7 jdk1. ...

  7. java中的基本小程序_12个用Java编写基础小程序经典案例(收藏篇)

    原标题:12个用Java编写基础小程序&经典案例(收藏篇) 如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用. 1.输出两个int数中的最大值 impor ...

  8. 计算机毕业设计JAVA课堂管理系统小程序用户端mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA课堂管理系统小程序用户端mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA课堂管理系统小程序用户端mybatis+源码+调试部署+系统+数据库+lw 本源 ...

  9. Scrapy爬取小实战——以新浪股市为例

    Scrapy爬取小实战--以新浪股市为例 前言 相信大家已经在CSDN上找到了很多讲解scrapy爬虫原理.详解balabala-的一大堆,所以这里我就不去对scrapy的原理做什么讲解,就只是用代码 ...

最新文章

  1. ASP.NET 4.0: 请求验证模式变化导致ValidateRequest=false失效
  2. (二)数据预处理 2019年研究生数学建模D题《汽车行驶工况构建》
  3. sap.m.library acts as one of the two most core framework library
  4. 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
  5. mysql suoyin 和锁_mysql 索引和锁
  6. android 添加个人标签,android – 如何在标签标签上添加填充?
  7. Mysql text类型的最大长度
  8. 开发者需要的 9 款代码比较工具
  9. 团队项目计划、人员安排以及开发方法
  10. 【解决方案】Excel条形图顺序与源数据相反怎么办
  11. 为什么「计件工资」的管理需要数字化?这家企业用实践解答
  12. 蜡笔小新鸿蒙系统,盘点蜡笔小新最污的四处剧情,网友:当年太纯洁现在终于看懂!...
  13. 程序员裸辞2个月找不到工作,心态爆炸了
  14. 【数据分析框架】AARRR模型的数据指标体系AARRR模型AARRR数据指标总结
  15. mysql性能监控 调优_MySQL管理之道:性能调优、高可用与监控(第2版)
  16. 使用Matplotlib绘制3D图形
  17. windows10 企业版激活处于通知模式怎么处理
  18. Autofac简单介绍
  19. Node之Express服务器启动安装与配置
  20. 利用Origin绘制等高线颜色填充图:初步绘制与细化

热门文章

  1. 我的世界java版红石电梯_《我的世界》红石电梯建造教程
  2. SPOJ 10628 Count on a tree 主席树 附数据生成器
  3. 北京信息科技大学计算机学院研究生怎么样,北京信息科技大学考研难吗?一般要什么水平才可以进入?...
  4. AD PCB设计入门总结(一)
  5. Oracle数据库培训视频教程 oracle工程师培训视频教程
  6. 计算机网络——配置DNS和WWW服务器大作业
  7. 安卓微信浏览器唤起系统内部浏览器
  8. Amazon亚马逊开发者账号申请
  9. SIP语音对讲从零到整之(一)sip介绍
  10. python判断dict有没有某个key用的方法是_python的dict判断key是否存在的方法