任务描述:
互联网为我们提供了巨大的便利,如微信带给我们的视频、淘宝带给我们便利的购物等,但这些APP都需要有一个账户才可以登录,而账户需要注册可以获取。
本例要求编写一个程序,模拟用户注册。用户输入用户名、密码、确认密码、生日(格式为yyyy--mm—dd为正确)、手机号(手机号长度为11位,并且以13、15、17、18为开头的手机号为正确)、邮箱(包含符号“@”为正确)信息之后,判断信息正确后,验证用户是否重复,重复则给出相应提示,如果不重复则注册成功。案例要求使用HashSet集合实现。
运行结果:
代码如下:
创建用户类:
/**
* 2022/4/4
*/
public class Yh {
private String name;
private String mi;
private String sr;
private String sjh;
private String yx;
public Yh() {
}
public Yh(String name, String mi, String sr, String sjh, String yx) {
this.name = name;
this.mi = mi;
this.sr = sr;
this.sjh = sjh;
this.yx = yx;
}
public String getName() {
return name;
}
public String getMi() {
return mi;
}
public String getSr() {
return sr;
}
public String getSjh() {
return sjh;
}
public String getYx() {
return yx;
}
}
创建测试类:
import java.util.HashSet;
import java.util.Scanner;
/**
* 2022/4/4
*/
public class yhZc {
public static void main(String[] args) {
// 创建HashSet集合对象
HashSet<Yh> hs = new HashSet<>();
sr(hs); // 调用用户输入的方法
ck(hs); // 注册成功后,调用查看方法,查看一下
}
// 创建查看方法
public static void ck(HashSet<Yh> hs){
System.out.println("用户名\t\t密码\t\t\t生日\t\t\t手机号\t\t\t邮箱");
// 遍历集合
for (Yh yh : hs){
System.out.println(yh.getName() + "\t\t" + yh.getMi() + "\t" + yh.getSr() + "\t" + yh.getSjh() + "\t\t" + yh.getYx());
}
}
// 用户输入
public static void sr(HashSet<Yh> hs){
Scanner in = new Scanner(System.in);
System.out.println("--------用户注册--------");
System.out.println("请输入用户名:");
String name = in.nextLine(); // 用户输入用户名
String mi; // 定义在外面,让外部能访问到
while (true) {
System.out.println("请输入密码:");
mi = in.nextLine(); // 用户输入密码
System.out.println("请确认密码:");
String qrm = in.nextLine();
if (mi.equals(qrm)){ // 判断密码是否一致
break;
}else{
System.out.println("两次密码不一致,请重新输入!");
}
}
String sr;
while (true) {
System.out.println("请输入生日:");
sr = in.nextLine(); // 用户输入生日
if (pdSr(sr)){ // 调用方法,等于true退出循环
break;
}else{
System.out.print("");
}
}
String sjh;
while (true) {
System.out.println("请输入手机号:");
sjh = in.nextLine(); // 用户输入手机号
if (pdSjh(sjh)){ // 调用方法,等于true退出循环
break;
}else{
System.out.print("");
}
}
String yx;
while (true) {
System.out.println("请输入邮箱:");
yx = in.nextLine(); // 用户输入邮箱
if (pdYx(yx)){ // 调用方法,等于true退出循环
break;
}else {
System.out.print("");
}
}
Yh yh = new Yh(name,mi,sr,sjh,yx); // 创建用户对象,将元素填进去
hs.add(yh); // 调用集合方法,将用户对象存进去
System.out.println("注册成功~!"); // 输出提示
}
// 判断生日格式是否正确
public static boolean pdSr(String sr){
boolean b = true; // 一个定义boolean变量
if (sr.length() != 10){ // 判断生日长度是否不为10
System.out.println("生日格式不正确!");
b = false; // 不为10,将true改成false
}else{
for (int i = 0 ; i < sr.length() ; i++){ // 遍历String
char c = sr.charAt(i); // 将每个字符提取出来
if (i == 4 || i == 7){ // i等于4或等于7时进入
if (! (c == '-')){ // 判断c是的字符是否为'-'
System.out.println("生日格式不正确!");
b = false; // 不为'-'将true改成false
}
}else{
if (!(Character.isDigit(c))){ // 判断字符是否是数字
System.out.println("生日格式不正确!");
b = false; // 如果不是数字,将true改成false
}
}
}
}
return b; // 返回这个变量
}
// 判断手机号是否正确
public static boolean pdSjh(String sjh){
boolean b = true;
if (sjh.length() != 11){ // 判断手机号的长度是否为11
System.out.println("手机号格式不正确!");
b = false;
// 判断开头是否为13,15,17,18
}else if (!(sjh.startsWith("13")||sjh.startsWith("15")||sjh.startsWith("17")||sjh.startsWith("18"))){
System.out.println("手机号格式不正确!");
b = false;
}
return b;
}
// 判断邮箱格式是否正确
public static boolean pdYx(String yx){
boolean b = true;
if (!yx.contains("@")){ // 判断输入的邮箱是否带有@
System.out.println("邮箱格式不正确!");
b = false;
}
return b;
}
}