#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 ");
}