用eclipse编写程序,模拟用户注册。用户首先输入用户名、密码、确认密码、生日(格式为yyyy-mm-dd为正确)、手机号(手机号长度为11位,并且以13、15、17、18开头的手机号为正确)、邮箱(包括符号“@”为正确)信息,判断信息正确后,验证用户是否重复,重复则给出相应提示,如果不重复则注册成功。要求使用HashSet集合实现
时间: 2024-03-01 22:54:36 浏览: 105
以下是代码实现:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class UserRegister {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Set<User> users = new HashSet<User>();
while (true) {
System.out.println("请输入用户名:");
String username = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
System.out.println("请确认密码:");
String confirmPassword = scanner.nextLine();
System.out.println("请输入生日(格式为yyyy-mm-dd):");
String birthdayStr = scanner.nextLine();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = null;
try {
birthday = dateFormat.parse(birthdayStr);
} catch (ParseException e) {
System.out.println("生日格式不正确,请重新输入!");
continue;
}
System.out.println("请输入手机号:");
String phoneNumber = scanner.nextLine();
if (!phoneNumber.matches("1[3578]\\d{9}")) {
System.out.println("手机号格式不正确,请重新输入!");
continue;
}
System.out.println("请输入邮箱:");
String email = scanner.nextLine();
if (!email.contains("@")) {
System.out.println("邮箱格式不正确,请重新输入!");
continue;
}
User user = new User(username, password, birthday, phoneNumber, email);
if (!users.add(user)) {
System.out.println("该用户已存在,请重新输入!");
} else {
System.out.println("注册成功!");
break;
}
}
scanner.close();
}
}
class User {
private String username;
private String password;
private Date birthday;
private String phoneNumber;
private String email;
public User(String username, String password, Date birthday, String phoneNumber, String email) {
this.username = username;
this.password = password;
this.birthday = birthday;
this.phoneNumber = phoneNumber;
this.email = email;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public Date getBirthday() {
return birthday;
}
public String getPhoneNumber() {
return phoneNumber;
}
public String getEmail() {
return email;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((username == null) ? 0 : username.hashCode());
return result;
}
@Override
public 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;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", birthday=" + birthday + ", phoneNumber="
+ phoneNumber + ", email=" + email + "]";
}
}
```
说明:
1. 程序中使用了一个名为`User`的类来存储用户信息,其中包含了用户名、密码、生日、手机号、邮箱等属性。
2. 用户输入信息后,首先进行格式验证,如果格式不正确,则提示用户重新输入。验证格式的代码使用了正则表达式。
3. 验证信息格式正确后,将用户信息封装成一个`User`对象,并将该对象添加到`HashSet`集合中。
4. 添加用户时,先判断该用户是否已经存在,如果已经存在,则提示用户重新输入。判断是否已经存在的依据是`User`类的`equals()`方法和`hashCode()`方法,这两个方法的实现使用了用户名作为唯一标识。
5. 如果用户信息输入正确,且该用户不存在,则注册成功并退出循环。
注意:本程序仅供学习参考,实际开发中需要根据实际情况进行更加严格的信息验证和安全性保护。
阅读全文