Я создаю валидатор пароля / ключа с набором правил, которые необходимо соблюдать для подтверждения пароля / ключа.
Эти правила следующие: - длина ключа должна быть не менее 7 символов, И не более 20 символов, AND - ключ не должен начинаться со специальных символов «#» или «», AND - ключ не должен содержать ни одного пробела, AND - ключ должен содержать хотя бы один символ верхнего регистра и хотя бы один символ нижнего регистра, И - Ключ не должен содержать имя пользователя, И - Ключ должен содержать либо «#», либо «», но не оба.
Мне удалось получить все правила для работы. Есть два выхода, которые проверяют ключ на соответствие правилам и либо сообщают, что ключ действителен, либо сообщают ВСЕ правила о том, что ключ не удался.
На выходе я не могу показать / сообщить ВСЕ правила, которые ключ не удался.
Код, который у меня сейчас есть, находится ниже. Я новичок в изучении java, поэтому, пожалуйста, поймите.
* Asks user for key word and the name and then checks if it is a valid key word.
*/
public void doCompletion(){
String key = UI.askString("Key: ");
String name = UI.askString("Your name: ");
this.validateKeyCompletion(key, name);
}
/** COMPLETION
* Report that the key is valid or report ALL the rules that the key failed.
*/
public void validateKeyCompletion(String key, String name){
/*# YOUR CODE HERE */
int characterNumber = key.length();
boolean hasUppercase;
boolean hasLowercase;
hasUppercase = !key.equals(key.toLowerCase());
hasLowercase = !key.equals(key.toUpperCase());
String specialChars = "(.*[ # _ ].*)";
if (characterNumber < 7 || characterNumber > 20){
UI.println("Invalid: Key length must not be less than 7 or greater than 20");
}
else if (key.contains(" ")){
UI.println("Invalid: Key cannot contain ' '");
}
else if(!hasUppercase)
{
UI.println("Invalid: Key must contain an uppercase character");
}
else if(!hasLowercase)
{
UI.println("Invalid: Key must contain a lowercase character");
}
else if(key.matches(name)){
UI.println("Invalid: Key cannot contain Username");
}
else if(!key.matches("^[^#_]+[#_]{1,1}[^#_]*")) {
UI.println("Invalid: Key must contain either a '#' or a '_', but not both");
}
else {
UI.println("Valid");
}
}