Метод equals не работает во всех циклах do, кроме последнего
public static void userRegistration() {
Scanner in = new Scanner(System.in);
User user = new User();
System.out.println("Зарегистрируйте пользователя");
System.out.println("Введите фамилию");
user.setLastName(in.nextLine());
System.out.println("Введите имя");
user.setFirstName(in.nextLine());
System.out.println("Введите отчество");
user.setSurName(in.nextLine());
System.out.println("Введите номер телефона");
while (!user.setPhoneNumber(in.nextLine())) ;
boolean notunique;
do {
notunique = false;
System.out.println("Введите e-mail");
for (User emailCheck : users) {
while (!user.setEmail(in.nextLine())) ;
if (emailCheck.equals(user)) {
System.out.println("Такой e-mail уже существует, введите другой");
notunique = true;
}
}
}
while (notunique);
do {
notunique = false;
System.out.println("Введите логин");
user.setLogin(in.nextLine());
for (User loginCheck : users) {
if (loginCheck.equals(user)) {
System.out.println("Такой логин уже существует, введите другой");
notunique = true;
}
}
}
while (notunique);
System.out.println("Введите пароль");
user.setPassword(in.nextLine());
user.setUserType("guest");
users.add(user);
System.out.println("Пользователь добавлен");
}
Добавление нового пользователя в ArrayList
.
Циклами do
проверяется e-mail
и логин на уникальность при помощи метода equals
.
Если проверка уникальности только одна (один цикл do
), все работает (выдает сообщение о существовании такого же логина или e-mail
, если он уже есть в списке, просит ввести заново). Если две или больше, то выполняется только последний.
Полазил по другим темам и видеоурокам на ютюбе, поэкспериментировал с переопределением методов equals()
и hashCode()
- результат пока тот же. Причем, если делаю всё не через сеттеры, а объявляя переменные перед циклом do
, то при таком же подходе все работает. Но задание требует делать всё через сеттеры, что бы параллельно еще проверялось соответствие вводимых значений регулярным выражениям в классе User.
Подскажите, почему не выполняются проверки во всех циклах?