package com.heima;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class 注册新用户 {
/*
* 需求:为用户制定一个注册的代码
* 分析:
* 键盘录入一个用户名,规则和字母数字组成,数字不能开头共有5-15位,用正则判断
* 如果符合规则则 ,然后对集合里面的键值集合进行判断看是否已经有了,如果有了则提示已经被注册,
*否则 就提示输入密码,
*然后在提示确认密码,然后和第一次的密码相比较,如果相等就存入,否则提示重新输入,
* 然后就把用户名作为键值密码作为值放在一个map集合里面因为不需要排序所以hashmap就可以.
*
*
*/
public static void main(String[] args) throws IOException {
//建立集合
HashMap<String, String> hm =new HashMap<>();
BufferedWriter bw =new BufferedWriter(new FileWriter("yyy.txt",true) );
//键盘录入用户名并提示命名规则
Scanner sc =new Scanner(System.in);
//提示
System.out.println("请输入用户名,命名规则:由5-15位的数字和字母组成,数字不能开头");
a: while(true){
String name =sc.nextLine();
//先判断是否存在,就是把文件里面的数据读出来.放到集合面,
BufferedReader br =new BufferedReader(new FileReader("yyy.txt"));
String b;
while ((b=br.readLine())!=null) {
String [] arr=b.split(",");
for (int i = 0; i < arr.length; i++) {
hm.put(arr[0], arr[1]);
}
}
br.close();
//然后对集合进行遍历
Set<String> set = hm.keySet();
//正则判断:
String regex ="[A-Za-z][A-Za-z0-9]{4,14}";
if(!name.matches(regex)){
System.out.println("输入的用户名不符合规则,请重新输入!");
}else {
//判断用户名是否存在!
if (hm.containsKey(name)) {
System.out.println("该用户名已经被注册,请重新输入!");
}else{
//如果符合规则就提示输入密码!
while(true){
System.out.println("请输入密码:");
String passworld = sc.nextLine();
System.out.println("请再次确认输入的密码:");
String passworld1 = sc.nextLine();
if (!passworld.equals(passworld1)) {
System.out.println("输入的密码不一致请重新输入密码!");
}else {
//写入一个文档
bw.write(name+",");
bw.write(passworld);
bw.newLine();
bw.close();
break a ;
}
}
}
}
}
}
}
|
|