java中递归的使用,及其实例
1、 // 用户信息的持久化保存(序列化) public void save(Map m) throws Exception { FileOutputStream fos = new FileOutputStream("User.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(m); oos.flush(); oos.close(); }

2、 // 用户信息的读取(反序列化) public Map read() throws Exception { FileInputStream fis = new FileInputStream("User.txt"); ObjectInputStream ois = new ObjectInputStream(fis); Map<String, String> temp = (HashMap) ois.readObject(); ois.close(); return temp; }
// 学生信息 public void list(Map m) { System.out.println("列表如下:"); Set<Map.Entry<String, String>> sets = m.entrySet(); for (Entry<String, String> s : sets) { System.out.println(s); } }

3、 // 验证并返回注册姓名 public static String nameLenght(Map m) { System.out.println("请输入3位以上字母和数字组成的姓名:"); String name = sc.next();// if (name.length() < 3) {// System.out.println("注册姓名小于三位,请重新输入:");// return nameLenght(m);// } //验证姓名长度大于3并且由字母数字组成 if(!(name.matches("\\w{3,}"))){ System.out.println("注册姓名不符合格式!"); return nameLenght(m); } // 用于验证注册姓名是否存在 Set<String> sets = m.keySet(); for (String s : sets) { if (s.equals(name)) { System.out.println("用户名已存在,请重新输入:"); return nameLenght(m); } } return name; }

4、// 验证密码长度大于6 public String passWordLenght() { System.out.println("请输入6位及以上密码:"); String passWord = sc.next(); if (passWord.length() < 6) { System.out.println("密码长度小于6,请重新输入:"); //如果密码不符合要求,返回重新输入,验证,递归 return passWordLenght(); } System.out.println("请再次确认密码:"); String passWord1 = sc.next(); if (!(passWord.equals(passWord1))) { System.out.println("两次密码不一致,请重新输入:"); return passWordLenght(); } System.out.println("注册成功!"); return passWord1; }

5、 // 用户登录验证 public void martch(Map m) { System.out.println("请输入姓名:"); String name = sc.next(); //输入姓名,在map集合查找是否存在,存在则验证密码,不存在则使用递归,返回重新输入 Set<String> sets = m.keySet(); for (String s : sets) { if (name.equals(s)) { martchPassWord(s, m); return; } } System.out.println("姓名不存在,请重新输入"); martch(m); }

6、 // 用户密码验证 public void martchPassWord(String name, Map m) { System.out.println("请输入密码"); String passWord = sc.next();
if (passWord.equals(m.get(name))) { System.out.println("登录成功!"); return; } if (!(passWord.equals(m.get(name)))) { System.out.println("密码不正确,请重新输入"); martchPassWord(name, m); } } // 学生删除 public void delStudents(Map m) { System.out.println("请输入要删除的学生姓名:"); String name = sc.next(); Set<String> sets = m.keySet(); for (String s : sets) { if (s.equals(name)) { m.remove(s); System.out.println("删除成功!"); return; } } System.out.println("输入姓名不存在,删除失败!"); delStudents(m); }
