import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String password = in.nextLine();
        boolean hasUpper = false;
        boolean hasLower = false;
        int digitCount = 0;
        int symbolCount = 0;

        for (char c : password.toCharArray()) {
            if (c >= 'a' && c <= 'z') {
                hasLower = true;
            } else if (c >= 'A' && c <= 'Z') {
                hasUpper = true;
            } else if (Character.isDigit(c)) {
                digitCount++;
            } else {
                int code = (int) c;
                if ((code >= 0x21 && code <= 0x2F)
                        || (code >= 0x3A && code <= 0x40)
                        || (code >= 0x5B && code <= 0x60)
                        || (code >= 0x7B && code <= 0x7E)) {
                    symbolCount++;
                }
            }
        }

        int lengthScore = password.length() <= 4 ? 5 : (password.length() <= 7 ? 10 :
                          25);
        int letterScore = 0;
        boolean hasLetter = hasUpper || hasLower;
        if (hasLetter) {
            letterScore = (hasUpper && hasLower) ? 20 : 10;
        }

        int digitScore = digitCount == 0 ? 0 : (digitCount == 1 ? 10 : 20);
        int symbolScore = symbolCount == 0 ? 0 : (symbolCount == 1 ? 10 : 25);

        int bonus = 0;
        if (hasUpper && hasLower && digitCount >= 1 && symbolCount >= 1) {
            bonus = 5;
        } else if (hasLetter && digitCount >= 1 && symbolCount >= 1) {
            bonus = 3;
        } else if (hasLetter && digitCount >= 1) {
            bonus = 2;
        }

        int total = lengthScore + letterScore + digitScore + symbolScore + bonus;

        String level;
        if (total >= 90) {
            level = "VERY_SECURE";
        } else if (total >= 80) {
            level = "SECURE";
        } else if (total >= 70) {
            level = "VERY_STRONG";
        } else if (total >= 60) {
            level = "STRONG";
        } else if (total >= 50) {
            level = "AVERAGE";
        } else if (total >= 25) {
            level = "WEAK";
        } else {
            level = "VERY_WEAK";
        }

        System.out.println(level);
    }
}

https://www.nowcoder.com/discuss/727521113110073344

思路:

  1. 输入处理:使用 Scanner 读取输入的密码字符串。
  2. 变量初始化:初始化变量来跟踪密码中的大写字母、小写字母、数字和符号的数量。
  3. 遍历字符:遍历密码中的每个字符,并根据字符类型更新相应的变量。
  4. 计算各部分得分:根据规则分别计算长度、字母、数字、符号的得分。
  5. 计算奖励得分:根据密码中是否包含大小写字母、数字和符号的组合来计算奖励得分。
  6. 总分和等级判定:将各部分得分相加,根据总分确定密码的安全等级并输出结果。