方法检查Java中的密码不工作

方法检查Java中的密码不工作,java,passwords,Java,Passwords,我正在尝试编写一个方法,如果字符串是或不是CodeHS中的有效密码,则返回该方法 它至少需要八个字符长,并且只能有字母和数字 在分级机中,除了密码检查(“codingisawesome”)和密码检查(“QWERTYUIOP”)之外,它通过了所有测试。 以下是我目前掌握的情况: public boolean passwordCheck(String password) { if (password.length() < 8) { return false;

我正在尝试编写一个方法,如果字符串是或不是CodeHS中的有效密码,则返回该方法

它至少需要八个字符长,并且只能有字母和数字

在分级机中,除了
密码检查(“codingisawesome”)
密码检查(“QWERTYUIOP”)
之外,它通过了所有测试。

以下是我目前掌握的情况:

public boolean passwordCheck(String password)
{
    if (password.length() < 8)
    {
        return false;  
    }
    else 
    {  
        char c;  
        int count = 0;   
        for (int i = 0; i < password.length(); i++) 
        {
            c = password.charAt(i);  
            if (!Character.isLetterOrDigit(c)) 
            {
                return false;  
            } else if (Character.isDigit(c)) 
            {
                count++;     
            }
        }
        if (count < 2)
        {  
            return false;  
        }
    }
    return true;  
}
公共布尔密码检查(字符串密码)
{
if(password.length()<8)
{
返回false;
}
其他的
{  
字符c;
整数计数=0;
对于(int i=0;i

如果有人能帮忙,我将不胜感激。谢谢。

假设您的要求如前所述

它至少需要八个字符长,并且只能有字母和数字

那么就不需要计算数字了。只需检查密码是否为最小长度,然后在每个字符上循环,如果任何字符不是字母或数字,则返回false。像

public boolean passwordCheck(String password) {
    if (password != null && password.length() >= 8) {
        for (char ch : password.toCharArray()) {
            if (!Character.isLetterOrDigit(ch)) {
                return false;
            }
        }
        return true;
    }
    return false;
}

假设您的要求如所述

它至少需要八个字符长,并且只能有字母和数字

那么就不需要计算数字了。只需检查密码是否为最小长度,然后在每个字符上循环,如果任何字符不是字母或数字,则返回false。像

public boolean passwordCheck(String password) {
    if (password != null && password.length() >= 8) {
        for (char ch : password.toCharArray()) {
            if (!Character.isLetterOrDigit(ch)) {
                return false;
            }
        }
        return true;
    }
    return false;
}

尝试使用模式的方法(这比循环更简单):


关于正则表达式的体面教程(这就是A-Z魔力的来源):

尝试使用模式的方法(这比循环更简单):


关于正则表达式的体面教程(这就是A-Z魔法的来源):

这些测试失败,因为您的代码检查密码必须至少有两位数字:-

if(计数<2)
{  
返回false;
}

而您的测试字符串没有任何。删除这段代码,它应该可以工作。有关更好的方法,请参阅其他答案。

这些测试失败,因为您的代码检查密码必须至少包含两位数字:-

if(计数<2)
{  
返回false;
}

而您的测试字符串没有任何。删除这段代码,它应该可以工作。有关更好的方法,请参阅其他答案。

您确定这些要求吗?大写字母和小写字母都没有?您正在检查密码是否至少有两位数字。“它需要至少八个字符长,只能有字母和数字”没有这样的要求。根据此规范,这两个密码都应该是有效的,但您拒绝它们是因为它们没有足够的数字来满足您的口味。从您的代码来看,您似乎要求至少有两个数字,但您没有提到,您确定这些要求吗?大写字母和小写字母都没有?您正在检查密码是否至少有两位数字。“它需要至少八个字符长,只能有字母和数字”没有这样的要求。根据此规范,这两个密码都应该是有效的,但您拒绝它们是因为它们没有足够的数字来满足您的口味。从您的代码来看,您似乎要求至少有2个数字,但您没有提到that@Kartik是的,我加的。@Kartik是的,我加的。
if (count < 2)
{  
    return false;  
}