Професионална програма
Loading...
+ Нов въпрос
Arcadia avatar Arcadia 1 Точки

Задача " Password Validator "

Бихте ли ми казали, къде ми е грешката? Тествам я цял ден, но уви.. Judge дава 85 / 100.

 

 

Условие:

Write a program that checks if a given password is valid. Password rules are:
- 6 – 10 characters (inclusive).
- Consists only of letters and digits.
- Have at least 2 digits.


If a password is valid, print Password is valid. If it is not valid, for every unfulfilled rule print a message:
- Password must be between 6 and 10 characters.
- Password must consist only of letters and digits.
- Password must have at least 2 digits.

Решение:

https://pastebin.com/rQM6JUgv

Тагове:
0
Fundamentals Module 10/01/2021 20:54:41
svephoto avatar svephoto 965 Точки
Best Answer

Здравей, Arcadia,

 

Виж какво ще стане, ако обърнеш условието в метода passwordConsistency и след това той изглежда така:

 

private static boolean passwordConsistency(String password, boolean isValid) {
    for (int i = 0; i < password.length(); i++) {
        if (!Character.isLetter(password.charAt(i)) && !Character.isDigit(password.charAt(i))) {
            isValid = false;

            System.out.println("Password must consist only of letters and digits");
            break;
        } else {
            isValid = true;
        }
    }

    return isValid;
}

 

Така проверяваш дали настоящият символ едновременно не е нито буква, нито цифра. Ако това е така, влизаш в if-а, иначе не. А за този тип проверка имаш и съкратен вариант на двата метода, който ги обединява:

 

if (!Character.isLetterOrDigit(password.charAt(i))) {
    ...
}

 

Успех!

0
10/01/2021 23:53:46
Arcadia avatar Arcadia 1 Точки

Благодаря!

1
svephoto avatar svephoto 965 Точки

Моля!

0
krum_43 avatar krum_43 651 Точки

Здравей колега,

 

Избрал си много сложен начин за решаванато на задачата.

Ако пренапишеш кода без булеви променливи и използване на 3 отделни метода кода ти ще бъде много по-кратък и разбираем.

 

0