【以下回答由 GPT 生成】
首先,你当前的代码逻辑有一些问题。在for循环中,你对每个字符进行检查,并在满足特定条件时返回"Medium"或"Strong"。这意味着只要发现一个字符满足条件,就会立即返回结果,而不会对其余字符进行判断。因此,你无法正确判断密码的强度。此外,你在判断字符类型时还存在一些逻辑错误,即你的else if语句中重复了相同的条件。
下面是修改后的代码,以解决你的问题:
public static String judge(String password) {
if (password.length() < 8) {
return "Weak";
}
boolean hasDigit = false;
boolean hasLowerCase = false;
boolean hasUpperCase = false;
for (char c : password.toCharArray()) {
if (Character.isDigit(c)) {
hasDigit = true;
} else if (Character.isLowerCase(c)) {
hasLowerCase = true;
} else if (Character.isUpperCase(c)) {
hasUpperCase = true;
}
}
if (hasDigit && hasLowerCase && hasUpperCase) {
return "Strong";
} else if (hasDigit || hasLowerCase || hasUpperCase) {
return "Medium";
} else {
return "Weak";
}
}
这里,我使用了三个boolean变量来记录密码中是否存在数字、小写字母和大写字母。在for循环中,我遍历密码的每个字符,并使用Character类的isDigit、isLowerCase和isUpperCase方法来判断字符的类型。如果密码包含数字、小写字母和大写字母,则返回"Strong",如果只包含其中某一种类型的字符,则返回"Medium",否则返回"Weak"。
希望这可以帮助到你解决问题。如果还有其他问题,请随时提问。
【相关推荐】