Статический метод распознает только один объект и никаких других

#java

#java

Вопрос:

Я работал над этой программой и недавно столкнулся с ошибкой при использовании статического метода. Обычно я не использую статические методы, но они есть в требованиях.

Итак, у меня есть статический метод VerifyUserNameAndPassWord, который принимает ввод списка пользователей, имени пользователя и пароля и сравнивает его с теми, которые хранятся в объекте, чтобы увидеть, верны ли данные.

К сожалению, с помощью этого метода он распознает только «User1» (первый объект), и каждый раз, когда я пытаюсь ввести имя пользователя и пароль user2, он всегда выдает ошибку недопустимого аргумента, которую я ввел.

Пользователь 2, конечно, сохранен в списке массивов.

Это мой основной метод:

 Scanner scanner = new Scanner(System.in);
        System.out.println("Enter your user name");
        String userName = scanner.nextLine();

        System.out.println("Enter your password name");
        String passWord = scanner.nextLine();


        if(User.verifyLoginByUsernameAndPassword(userList, userName, passWord)== true)

        {
          do something..
        }
  

И это статический метод:

 public static boolean verifyLoginByUsernameAndPassword(ArrayList<User> user, String username, String password)
{
    boolean check = false;
    for(User s: user)
    {
        if(username.equals(s.getUserName()) amp;amp; password.equals(s.getPassWord()))
        {
            check = true;
            break;
        }
        else
        {
            check = false;
            throw new IllegalArgumentException("Username and password are incorrect ");

        }
    }
    return check;

}
  

Комментарии:

1. Вам не нужно создавать исключение до тех пор, пока вы не обработаете весь массив, и check значение по-прежнему равно false. На данный момент вы выбрасываете его при первом несоответствии. static не имеет к этому никакого отношения.

Ответ №1:

Измените реализацию вашего метода. Проверьте весь список, затем выдайте исключение, если имя пользователя и пароли не совпадают.

 public static boolean verifyLoginByUsernameAndPassword(ArrayList<User> user, String username, String password) {
    for(User s: user) {
        if(username.equals(s.getUserName()) amp;amp; password.equals(s.getPassWord())) {
            return true;
        }
    }
    throw new IllegalArgumentException("Username and password are incorrect ");

}