如何为Java密码校验程序添加循环功能以无需重启校验多个密码
Java密码校验程序连续校验功能实现
我们基于你原有代码预先定义的endofinput退出触发词,添加循环逻辑即可实现连续校验需求,同时修复了原有代码中小写字母校验的逻辑错误,修改后完整代码如下:
import java.util.Scanner; public class Password { public static void main(String[] args) { String exitFlag = "endofinput"; Scanner scanner = new Scanner(System.in); // 新增无限循环实现连续校验 while(true){ System.out.print("请输入待校验密码(输入endofinput退出程序):"); String password = scanner.nextLine(); // 判断是否触发退出 if(exitFlag.equals(password)){ System.out.println("程序退出"); scanner.close(); break; } // 密码不能包含password字符串校验 if(password.contains("password")){ System.out.println("密码不能包含password字符串"); } // 长度校验 if(password.length() < 8){ System.out.println("密码长度不能小于8位"); } // 空格/特殊字符校验 if((password.contains(" ")||password.contains("@")|| password.contains("#")|| password.contains("!") || password.contains("~")|| password.contains("$") || password.contains("%") || password.contains("^")|| password.contains("*") || password.contains("(")|| password.contains(")") || password.contains("-")|| password.contains("+") || password.contains("/")|| password.contains(":") || password.contains("&")|| password.contains(".")|| password.contains(", ") || password.contains("<")|| password.contains(">")|| password.contains("?")|| password.contains("|"))){ System.out.println("密码不能包含空格或特殊字符"); } // 数字校验 if(!(password.contains("1")|| password.contains("2")||password.contains("3")||password.contains("4")||password.contains("5")||password.contains("6")|| password.contains("7")||password.contains("8")||password.contains("9")||password.contains("0"))){ System.out.println("密码需要包含至少一位数字"); } // 大写字母校验 int upperCount = 0; for (int i = 65; i <= 90; i++) { char c = (char)i; String e = Character.toString(c); if (password.contains(e)) { upperCount = 1; } } if (upperCount == 0) { System.out.println("密码需要包含至少一位大写字母"); } // 小写字母校验 修复原有逻辑i起始值错误问题,97对应小写a int lowerCount = 0; for (int i = 97; i <= 122; i++) { char c = (char)i; String str1 = Character.toString(c); if (password.contains(str1)) { lowerCount = 1; } } if (lowerCount == 0) { System.out.println("密码需要包含至少一位小写字母"); } // 校验完成打印分割线,区分多次校验结果 System.out.println("----------------------------------------"); } } }
核心修改说明
- 新增
while(true)无限循环包裹输入、校验全流程,无需重启程序即可连续校验多个密码 - 新增退出逻辑:当用户输入
endofinput时,自动关闭Scanner资源后退出程序 - 修复原有小写字母校验逻辑bug:循环起始值从错误的90调整为97,解决原有逻辑无法正确识别a~y小写字母的问题
- 优化提示语为中文,添加校验结果分割线,提升使用体验
内容的提问来源于stack exchange,提问作者killer_of Lincoln
相关产品推荐
相关产品推荐

