知道该方法无法验证的原因吗?

时间:2018-05-31 21:56:53

标签: java servlets

知道为什么isValidPassword()方法没有执行验证。即使密码长度小于6或密码,特殊字符也无法验证。

if(!SoccerUtils.isValidPassword(password)){
    out.print("<p style=\"color:red\">Password must be at least 6 characters long</p>");               
    RequestDispatcher rd = request.getRequestDispatcher("register.jsp");
    rd.include(request, response);              
    } else{          
        //Do some action here        
        }

这里我调用'isValidPassword()'方法,在这个方法中,我检查两个条件(a)如果密码长度小于6 然后返回false,否则为true。 类似地(b)如果'password'没有字母或Digit返回false,否则返回true。两种情况都没有验证。我可以在isValidPassword()中找到两个案例的一个回报吗?

public static boolean isValidPassword(String password) {        
        if (password.length()< 6  ) {
            return false;
        }

        for(int i=0; i<password.length(); i++) {
            if(!Character.isLetterOrDigit((password.charAt(i)))) {
                return false;
            }

        }

        return true;
}

1 个答案:

答案 0 :(得分:1)

  

同样(b)如果密码是&#39;没有字母或数字返回false,否则返回true。

您所检查的内容与此 1 的要求不同。您的代码实际上是在检查所有字符是字母还是数字。

要了解您的代码正在做什么,我建议您使用&#34; hand execute&#34;它,或使用调试器来观察它在做什么。

尝试使用此示例:&#34; Passw0rd!&#34;,(通过我的阅读要求)应该是有效的密码。 (它的长度> 6,它包含一个字母和一个数字。)

  

我可以在isValidPassword()中找到两个案例的一个回复吗?

你可以...但它会使代码更复杂!

1 - 我怀疑您错误地复制了该要求。要求(b)在语法上是不正确的。这种语法错误引起了句子实际含义的模糊性......用英语。