我一直在研究此程序,最近使用静态方法出错。 我通常不使用静态方法,但是在要求中。
因此,我有一个静态方法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()) && password.equals(s.getPassWord()))
{
check = true;
break;
}
else
{
check = false;
throw new IllegalArgumentException("Username and password are incorrect ");
}
}
return check;
}
答案 0 :(得分:3)
更改您的方法实现。检查整个列表,然后在用户名和密码不匹配时抛出异常。
public static boolean verifyLoginByUsernameAndPassword(ArrayList<User> user, String username, String password) {
for(User s: user) {
if(username.equals(s.getUserName()) && password.equals(s.getPassWord())) {
return true;
}
}
throw new IllegalArgumentException("Username and password are incorrect ");
}