Как просмотреть ObservableArrayList, чтобы увидеть, совпадают ли два свойства?

У меня есть система входа в систему, которая перебирает всех клиентов, чтобы проверить, совпадают ли конкретные имя пользователя и пароль, но, похоже, она не работает. Все клиенты находятся в ObservableArrayList. Я сослался на пост это SO, чтобы сделать это изначально, но это все равно не сработало. Любая помощь будет принята с благодарностью. Спасибо.

Другая информация

TextField username,password;
Customer checkCustomer;
ObservableList<Customer> customers;

customers = FXCollections.observableArrayList();

Система входа (графический интерфейс)

if (t.getSource() == logIn){
            //Owner login


            if (username.getText().equals("admin") && password.getText().equals("admin")){
                System.out.println("success, owner logged in");
                window.setScene(primaryOwner);
            }
            else {

                  if (findRegisteredCustomer(username.getText(),password.getText()) != null){
                      System.out.println("Success, customer logged in");
                      if (checkCustomer.getPoints() < 1000){
                        status = "Silver";
                       }
                      else if (checkCustomer.getPoints() > 1000){
                        status = "Gold";
                       }
                      welcome.setText("Welcome " + checkCustomer.getUsername() + ". " + "You have " + checkCustomer.getPoints() + " points. " + "Your status is " + status + ".");
                      System.out.println("success, " + checkCustomer.getUsername() + " has logged in");
                      window.setScene(customerStartScreen);
                  }
                  else {
                      System.out.println("Username: " + username.getText() + ", Password: " + password.getText());
                      System.out.println("failed, incorrect login details");
                  }
            }
        }

найти, если клиент зарегистрирован метод

public Customer findRegisteredCustomer(String username, String password){
          for(Customer customerTest: customers){
              if (customerTest.getUsername().equals(username) && customerTest.getPassword().equals(password)){
                      System.out.println("Registered user");
                      checkCustomer = customerTest;
                      return customerTest;
                  }
              return null;
          }
          return null;
}

Класс клиента

public class Customer extends User {
    private int points;
    
    public Customer(String username, String password){
        super(username,password);
        points = 0;
        
    }
    
    public Customer(String username, String password, int points){
        super(username,password);
        this.points = points;
    }

    public int getPoints() {
        return points;
    }

    public void setPoints(int points) {
        this.points = points;
    }
    
}

ваша реализация цикла в findCustomer выглядит неправильно: похоже, она находит совпадение только в том случае, если учетные данные принадлежат первому клиенту в списке :) Лучше всего исправить форматирование (в частности, отступ), чтобы увидеть его.

kleopatra 03.04.2022 16:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы возвращаете null после блока if, удалите первый возвращаемый null в методе findRegisterdCustomer, и все будет в порядке. Также вы можете изучить хеширование, методы equals и пароли по умолчанию, а также возможные проблемы с ними.

Большое спасибо, это сработало! Спасибо за подсказку, я тоже посмотрю на хеширование.

Robert Williamson 03.04.2022 16:32

Другие вопросы по теме