每次我尝试让用户生成密码时,它总是会返回为假,无论我是否按照我设置的标准输入密码。
我曾多次尝试重写检查方法,但没有运气。我尝试使用 ArrayList 来比较。
public boolean check(String password)
{
if(password.length() < 6 && password.length() > 16)
{
return false;
}
Pattern special = Pattern.compile (specialChars);
Matcher hasSpecial = special.matcher(password);
int i = 0;
boolean hasDigit = false;
boolean hasLower = false;
boolean hasUpper = false;
while(i < password.length() && !hasDigit && !hasLower && !hasUpper)
{
if(Character.isDigit(password.charAt(i)))
{
hasDigit = true;
}
else if(Character.isLowerCase(password.charAt(i)))
{
hasLower = true;
}
else if(Character.isUpperCase(password.charAt(i)))
{
hasUpper = true;
}
i++;
}
return hasDigit && hasUpper && hasLower && hasSpecial.find();
}
如果小于 6 个字符且大于 16 个字符,我希望密码返回 false。此外,密码必须包含 1 个数字、一个大写字母、一个小写字母和一个特殊字符