Java密码字符逐位对比功能实现问题求助
密码对比功能修复方案
问题分析
现有代码存在以下缺陷,无法满足需求:
- 未处理首字符不匹配直接输出FAIL的场景(如
checkPassword="81234") - 对比过程中出现不匹配时,仍继续后续字符对比,且未标记整体失败状态
- 未校验两个字符串长度是否一致,长度不同时无法正确输出最终结果
- 输出的
OK为换行格式,不符合需求的空格分隔要求
修复步骤
- 新增
isMatch变量记录整体匹配状态,初始值为true - 遍历对比字符时,若已发现不匹配则终止循环,避免无效对比
- 首字符不匹配时直接标记失败并终止循环,最终输出
FAIL - 对比过程中用
print输出OK(带空格),保证格式符合要求 - 遍历结束后校验两个字符串长度,长度不一致则标记为失败
- 最后根据
isMatch状态输出PASS或FAIL
修复后完整代码
package NewPackage; /* password = 123 checkPassword(123) -> OK OK PASS checkPassword(124) -> OK OK FAIL checkPassword(12) -> OK OK FAIL checkPassword(1234) -> OK OK OK FAIL checkPassword(81234) -> FAIL */ public class Tworzenie_tablicy_char { public static void main(String[] args) { String password = "123"; // 可替换为不同测试用例:"123"、"124"、"12"、"1234"、"81234" String checkPassword = "12"; boolean isMatch = true; int minLength = Math.min(password.length(), checkPassword.length()); for (int i = 0; i < minLength; i++) { // 首字符不匹配直接标记失败并终止循环 if (i == 0 && password.charAt(i) != checkPassword.charAt(i)) { isMatch = false; break; } // 非首字符不匹配,标记失败但继续输出之前的OK(按需求场景) if (password.charAt(i) != checkPassword.charAt(i)) { isMatch = false; } // 输出OK,用print保证空格分隔 System.out.print("OK "); } // 长度不一致则直接标记失败 if (password.length() != checkPassword.length()) { isMatch = false; } // 输出最终结果 System.out.println(isMatch ? "PASS" : "FAIL"); } }
关键逻辑说明
- 首字符校验:如果第一位就不匹配,直接终止循环,最终输出
FAIL,符合checkPassword="81234"的场景要求 - 长度校验:无论前面字符是否匹配,只要两个字符串长度不同,最终结果都是
FAIL - 输出格式:用
System.out.print输出OK,保证多个OK用空格分隔,最后用println输出最终的PASS/FAIL - 失败标记:一旦发现不匹配就设置
isMatch=false,后续循环不再修改该状态
内容的提问来源于stack exchange,提问作者Jasin93
相关产品推荐
相关产品推荐

