请求协助为Java密码校验程序添加二次确认功能
实现符合要求的Java密码校验功能
没问题,我帮你把这个密码校验功能完整实现出来!下面是修改后的可直接编译运行的代码,完全满足你提出的所有要求:密码长度必须为8位、包含至少1个大写字母、1个小写字母和1个数字,并且会要求用户再次输入密码进行匹配验证。
import java.util.Scanner; public class PassChecker2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); String inputPassword; String confirmPassword; // 第一步:获取符合规则的密码 do { System.out.println("请输入密码(要求:长度8位,包含1个大写字母、1个小写字母和1个数字):"); inputPassword = input.nextLine().trim(); if (!checkPasswordValidity(inputPassword)) { System.out.println("密码不符合规则,请重新输入!"); } } while (!checkPasswordValidity(inputPassword)); // 第二步:验证两次密码是否匹配 do { System.out.println("请再次输入密码进行确认:"); confirmPassword = input.nextLine().trim(); if (!inputPassword.equals(confirmPassword)) { System.out.println("两次输入的密码不一致,请重新输入!"); } } while (!inputPassword.equals(confirmPassword)); System.out.println("密码设置成功!"); input.close(); } // 密码规则校验方法 private static boolean checkPasswordValidity(String password) { // 正则表达式:匹配长度恰好8位,包含至少一个小写、一个大写、一个数字 String passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8}$"; return password.matches(passwordRegex); } }
关键部分说明:
- 密码规则校验:我用了正则表达式
^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8}$,拆解一下:(?=.*[a-z]):确保包含至少一个小写字母(?=.*[A-Z]):确保包含至少一个大写字母(?=.*\\d):确保包含至少一个数字.{8}:确保密码长度恰好为8位
- 循环输入逻辑:用do-while循环来保证用户输入符合要求才会进入下一步,避免一次输入错误就程序终止
- 密码匹配验证:第二次输入密码后直接和第一次的有效密码对比,不一致就重新输入,直到匹配成功
内容的提问来源于stack exchange,提问作者SamaliiiRose
相关产品推荐
相关产品推荐

