Метод проверки пароля в Java не работает - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь написать метод, который возвращает, если строка является или не является действительным паролем в CodeHS.

Он должен иметь длину не менее восьми символов и может содержать только буквы и цифры.

В грейдере он проходит все испытания, кроме passwordCheck("codingisawesome") и passwordCheck("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;  
}

Если кто-то может помочь, я был бы признателен.Спасибо.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Попробуйте подход с использованием шаблонов (это проще, чем зацикливание):

public boolean passwordCheck(String password)
{
    return password!=null && password.length()>=8 && password.matches("[A-Za-z0-9]*");
}

Достойный урок по регулярным выражениям (вот откуда взялась магия AZ): http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

0 голосов
/ 15 ноября 2018

Эти тесты не пройдены, поскольку ваш код проверяет, что пароль должен содержать не менее 2 цифр: -

if (count < 2)
{  
    return false;  
}

А у ваших тестовых строк их нет. Удалите этот кусок кода, и он должен работать. Для лучшего способа см. Другие ответы.

0 голосов
/ 15 ноября 2018

При условии, что ваше требование соответствует указанному

Оно должно быть длиной не менее восьми символов и может содержать только буквы и цифры

Тогда не нужно считать цифры. Просто проверьте, что пароль имеет минимальную длину, затем зациклите каждый символ, возвращающий 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...