You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现密码强度计分功能运行结果与预期不符如何解决

密码强度检测工具问题修复

错误原因

  • 长度计分逻辑不符合需求:仅判断长度≥8加1分,未区分8-12位得1分、大于12位得2分的规则
  • 数字检测逻辑错误:内层循环匹配到数字后仅跳出数字遍历的内层循环,外层仍在遍历密码所有字符,密码有多少个数字就会加多少分,而非符合条件仅加1分
  • 特殊符号检测逻辑存在同数字检测一样的问题,匹配到符号后未直接终止外层遍历,多符号场景会重复加分

修复方案

按规则调整长度计分逻辑,数字、特殊符号检测匹配到符合要求的字符后直接终止外层遍历,保证对应项仅加1分。

修复后的核心point()方法代码

public int point()
{
    point = 0;
    // 长度计分修正
    int len = password.length();
    if (len >=8 && len <=12)
    {
        point += 1;
    } else if (len >12) {
        point += 2;
    }
    // 大写小写检测(原逻辑无问题可保留)
    String pass_upper = password.toUpperCase();
    String pass_lower = password.toLowerCase();

    for (int i = 0; i < password.length(); i++) {
        if (password.charAt(i) == pass_upper.charAt(i))
        {
            point += 1;
            break;
        }
    }
    for (int k = 0; k < password.length(); k++) {
        if (password.charAt(k) == pass_lower.charAt(k))
        {
            point += 1;
            break;
        }
    }
    // 数字检测修正
    String digit = "0123456789";
    digitLoop: for (int i = 0; i < password.length(); i++) {
        for (int k = 0; k < digit.length(); k++) {
            if (password.charAt(i) == digit.charAt(k))
            {
                point += 1;
                break digitLoop; // 直接跳出数字检测的外层循环,仅加1分
            }
        }
    }

    // 非字母数字字符检测修正
    char[]non_alphabetic = {
        '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-',
        '+'};
    symbolLoop: for (int i = 0; i < password.length(); i++) {
        for (int k = 0; k < non_alphabetic.length; k++) {
            if (password.charAt(i) == non_alphabetic[k])
            {
                point += 1;
                break symbolLoop; // 直接跳出符号检测的外层循环,仅加1分
            }
        }
    }

    return point;
}

验证结果

输入测试密码Hellllllo@123时,长度13位得2分、包含大写字母得1分、包含小写字母得1分、包含数字得1分、包含特殊符号得1分,总分为5分,符合预期结果。

内容的提问来源于stack exchange,提问作者Duke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:15:04