我写过这个方法
public boolean passwordCheck(String password)
{
boolean isValid = false;
int numCount = 0;
if(password.length() < 8){
return false;
}
for(int i = 0; i < password.length(); i++){
if(!Character.isLetterOrDigit(password.charAt(i)))
{
return false;
}
else{
return true;
}
}
return isValid;
}
当我做passwordCheck(“a * b * e * d * c”)时(想象星号之间没有空格)它应该返回false,因为我有
if(!Character.isLetterOrDigit(password.charAt(i)))
因此,由于密码中的某些内容不是有效字符,我希望它会返回false,但事实并非如此。
答案 0 :(得分:1)
在第一个字符是字母或数字后返回true。
答案 1 :(得分:0)
在您检查每个字符之前,您不想返回true
。但是目前,只要您检查了第一个,就会返回true
。
一种可能的解决方案是摆脱else
子句,并将return true;
向下移动到循环之外,就像这样。
for(int i = 0; i < password.length(); i++){
if(!Character.isLetterOrDigit(password.charAt(i)))
{
return false;
}
}
return true;
答案 2 :(得分:0)
如果您使用&#34;返回&#34;当一个角色是'#34;不可接受的&#34; (return false
)这没关系 - 因为&#34;一个糟糕的苹果会破坏这一堆#34;
并且:&#34;一个无效字符表示整个密码无效......&#34;但是如果你只是因为一个字符有效/为真而返回true
。这是你方法中的错误。 -
public boolean passwordCheck(String password)
{
if(password.length() < 8) return false;
for(int i=0; i < password.length(); i++)
if(!Character.isLetterOrDigit(password.charAt(i)))
return false;
return true;
}