基于HashSet集合完成的微博用户注册的案例

简介: 基于HashSet集合完成的微博用户注册的案例
步骤
1. 设计 用户的实体类
import java.util.Date;
import java.util.Objects;

public class User {
    // 用户名
    private String username;
    // 密码
    private String password;
    // 生日
    private Date birthday;
    // 手机号
    private String phone;
    // 邮箱
    private String email;

// 基于  IntellJ Idea 软件开发的快捷键:
    // Alt + Insert   Getter  And  Setter
    // Alt + Insert   equals  And  hashCode
    // Alt + Insert   toString


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(username, user.username) &&
                Objects.equals(password, user.password) &&
                Objects.equals(birthday, user.birthday) &&
                Objects.equals(phone, user.phone) &&
                Objects.equals(email, user.email);
    }

    @Override
    public int hashCode() {
        return Objects.hash(username, password, birthday, phone, email);
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", birthday=" + birthday +
                ", phone='" + phone + '\'' +
                ", email='" + email + '\'' +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

2. 编写 注册用户 的测试类
import java.util.HashSet;
import java.util.Scanner;

public class UserRegister {

    static HashSet hs = new HashSet();

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入用户名:");
        String username = sc.nextLine();

        System.out.println("请输入密码:");
        String password = sc.nextLine();

        System.out.println("请重复输入密码:");
        String repassword = sc.nextLine();

        System.out.println("请输入出生日期:");
        String birthday = sc.nextLine();

        System.out.println("请输入手机号码:");
        String phone = sc.nextLine();

        System.out.println("请输入电子邮箱:");
        String email = sc.nextLine();


        CheckInfo ci = new CheckInfo();
        String sb = ci.checkInfo(username, password, repassword, birthday, phone, email);
        System.out.println("注册的结果是:" + sb);
    }
}

3. 编写 用户校验的 工具类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;

public class CheckInfo {

    HashSet  hashSet = new HashSet();

    StringBuilder sb = new StringBuilder();
    int  status = 1 ; // 1 代表成功  2 代表 失败
    public String checkInfo(String username,String password,String repassword,String birthday,String phone, String email){
        // 生日的判断
        if (birthday.length() != 10){ //  1999-09-09
            sb.append("您填写的生日格式有误,请检查!");
            status = 2 ;
        }
        // 密码的判断
        if (!password.equals(repassword)){
            sb.append("两次密码填写不一样,请检查!");
            status = 2 ;
        }
        // 手机格式和开头号码的判断
        if (phone.length() != 11){ //  1999-09-09
            sb.append("您填写的手机号码格式有误,请检查!");
            status = 2 ;
        }else if (!(phone.startsWith("13") ||phone.startsWith("15") || phone.startsWith("17") || phone.startsWith("18") ) ){ //  1999-09-09
            sb.append("您填写的手机号码不正确,请检查!");
            status = 2 ;
        }
        // 邮箱的判断
        if (!email.contains("@")){
            sb.append("您填写的电子邮箱格式有误,请检查!");
            status = 2 ;
        }

        // 如果以上信息的校验都是无误  则可以将新用户加入到集合内
        if(status == 1){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date dateBirthday = null;

            try {
                dateBirthday = sdf.parse(birthday); //  字符串转为 日期类型 有可能出现错误、错误了 则执行catch内的代码 否则 不执行!
            } catch (ParseException e) {
                e.printStackTrace();// Stack  栈      数据结构与算法:  内存分析
            }
            // 创建user 对象  
            User user = new User();

      //  完成对象的内容封装
            user.setUsername(username);
            user.setPassword(repassword);
            user.setBirthday(dateBirthday);
            user.setPhone(phone);
            user.setEmail(email);
        }

        if (status == 1){
            sb.append("注册成功!");
        }
        return  sb.toString();
    }
}


4 运行程序:

在这里插入图片描述

请输入用户名:

张三

请输入密码:

1

请重复输入密码:

1

请输入出生日期:

1999-09-09

请输入手机号码:

14696963322

请输入电子邮箱:

369@qq.com

您填写的手机号码不正确,请检查!

目录
相关文章
|
存储 运维 监控
Seata-微服务架构开发的必备利器
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式务服务,于 2019 年 1 月正式开源。 目前有四种事务模式,分别是 AT 事务模式(阿里独创)、 TCC事务模式、XA 事务模式以及 Saga 事务模式,基本囊括了市面上大部分事务模式,可以成为是一个一站式的分布式事务解决方案。
Seata-微服务架构开发的必备利器
|
编解码
Blender视图渲染知识
Blender视图渲染知识
Blender视图渲染知识
Ingress 开启 TLS / HTTPS 被忽略的细节
我们之前接入层用的SLB>Nginx ,考虑到Ingress和k8s的集成,我们用Ingress替代了Nginx,测试同学反馈在低版本浏览器上报错。
5379 0
|
4月前
|
架构师 Java 数据库
Spring Boot技术路线图(从初级到架构师)
这个阶段成功的标志就是能够讲清楚技术实现方案,能够设计出高并发的稳定系统。
437 0
|
5月前
|
Java 测试技术 数据库
Java 全链路测试体系:单元测试、集成测试与 TDD 从原理到落地
本文系统讲解Java测试体系,涵盖测试金字塔模型、单元测试(FIRST原则、JUnit5/Mockito/AssertJ实战)、集成测试(TestContainers真实环境)、TDD红-绿-重构实践,以及覆盖率认知、CI/CD集成等落地准则,助力开发者构建高质可维护代码。
595 1
|
11月前
|
数据采集 安全 算法
淘宝商品详情接口(item_get)技术指导:从认证到数据解析实战
本文详解淘宝商品详情接口(item_get)的实战调用,涵盖签名认证、数据解析、批量处理等核心环节,提供可复用代码与避坑指南,助力开发者高效稳定获取商品信息。
|
8月前
|
Java 数据库 开发者
Java 类加载与代码块执行顺序详解
本文详解Java中静态代码块、实例初始化块、构造器及局部代码块的执行顺序。通过示例分析,揭示类加载与对象创建时的生命周期机制,并总结“静→局→初→构”口诀,帮助开发者合理初始化资源,避免常见错误,提升代码健壮性与可读性。
|
8月前
|
弹性计算 Kubernetes 安全
云监控 2.0 面向实体的全链路日志审计与风险溯源
云监控2.0日志审计构建全链路安全溯源体系,通过统一采集基座融合云产品与运行时数据,依托UModel实体建模打通ACS、Infra、K8s多域孤岛,实现AK操作、网络异常、容器威胁、主机攻防等场景的一键溯源与闭环分析,助力企业从“看日志”迈向“懂业务”的智能安全运营。
|
数据可视化 搜索推荐 程序员
低代码平台是什么?一文简述:低代码开发平台的分类、功能与构成
本文深入探讨了低代码的概念、分类及其构成,旨在为读者清晰阐述低代码的内涵与外延。文章从低代码的历史起源讲起,追溯至1982年James Martin的前瞻性预测,再到2014年Forrester正式提出“低代码”概念。文中详细解析了低代码与无代码的区别,并按代码量、适用范围、业务类型及使用者类型等多个维度进行分类。
|
人工智能 调度 项目管理
技术评审排程工具沉浸式解析:让项目协作更精准,技术评审不再成为瓶颈
技术评审是研发过程中把控质量、识别风险的重要环节,但缺乏系统排程常导致节奏混乱、沟通低效、意见落实不到位,进而引发项目延期和风险累积。本文详解技术评审排程管理的必要性、关键角色、流程节点与协作模式,并推荐实用工具与代码嵌入方法,助力团队实现高效评审、质量前置,让评审真正为交付赋能。