/
AnatoliyMatveev
/
Practic5
Обзор
Документация
Войти
/
AnatoliyMatveev
/
Practic5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
PasswordChecker.java
57 строк
3 KB
AnatoliyMatveev
create: P5.java, PasswordChecker.java
13 май 2026, 14:39
Верифицирован
13 май 2026, 14:39
e0d770d
Код
Авторство
О чём код?
class PasswordChecker { // Используем Integer (обертку), чтобы по умолчанию поля были null. // Это поможет понять, вызвал ли пользователь сеттеры или нет. private Integer minLength = null; private Integer maxRepeats = null; // Сеттер минимальной длины public void setMinLength(int minLength) { if (minLength < 0) { // Выбрасываем исключение, если длина отрицательная throw new IllegalArgumentException("Минимальная длина не может быть меньше 0. Передано: " + minLength); } this.minLength = minLength; } // Сеттер максимальных повторений public void setMaxRepeats(int maxRepeats) { if (maxRepeats <= 0) { // Выбрасываем исключение, если повторений 0 или меньше throw new IllegalArgumentException("Максимальное число повторений должно быть больше 0. Передано: " + maxRepeats); } this.maxRepeats = maxRepeats; } // Метод валидации пароля public boolean verify(String password) { // Проверяем, инициализированы ли настройки чекера if (this.minLength == null || this.maxRepeats == null) { throw new IllegalStateException("Невозможно выполнить проверку: лимиты не установлены!"); } // Критерий 1: Проверка длины пароля if (password.length() < minLength) { return false; } // Критерий 2: Поиск идущих подряд одинаковых символов int currentRepeats = 1; // Любой символ сам по себе уже повторяется 1 раз for (int i = 1; i < password.length(); i++) { // Если текущий символ совпадает с предыдущим if (password.charAt(i) == password.charAt(i - 1)) { currentRepeats++; // Если счетчик превысил лимит, пароль бракуется if (currentRepeats > maxRepeats) { return false; } } else { // Если символ сменился, сбрасываем счетчик обратно на 1 currentRepeats = 1; } } // Если ни один критерий не вернул false, пароль надежен return true; } }