登录验证代码Java
经过一些研究和朋友的帮助,我可以制作一个方法(authenticificate),将用户在主界面中给出的用户名和密码与登录列表中给出的用户名和密码进行比较。问题是方法总是返回false,我找不到问题
提前感谢你的帮助
主要
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String username;
String password;
System.out.println("Enter your username");
username = input.nextLine();
System.out.println("Enter your password");
password = input.nextLine();
UserList test2 = new UserList();
if (test2.authenticate(username, password) == true) {
System.out.println("Hi");
} else {
System.out.println("Username or/and password are wrong.");
}
}
}
使用者
public class User {
protected String username;
protected String password;
public User(String username, String password) {
this.password = password;
this.username = username;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
@Override
public boolean equals(Object o) {
if (o instanceof User) {
return ((User) o).username.equals(username);
}
return false;
}
@Override
public int hashCode() {
int hash = 7;
hash = 97 * hash + Objects.hashCode(this.username);
return hash;
}
}
用户列表
public class UserList {
private HashSet<User> loginList;emphasized text
public UserList() {
Scanner scan;
loginList = new HashSet();
try {
scan = new Scanner(new File("src/boitedejeux/Logins.txt"));
String ligne = scan.nextLine();
while (scan.hasNext()) {
ligne = scan.nextLine();
String[] res = ligne.split(",");
loginList.add(new User(res[0], (res[1])));
}
} catch (FileNotFoundException e) {
System.out.println("Erreur");
}
}
public boolean authenticate(String username, String password) {
if (null == loginList) {
throw new IllegalStateException("The user list isn't initialised");
}
return loginList.stream()
.filter(usern -> usern.getUsername().equals(username))
.filter(passw -> passw.getPassword().equals(password))
.findFirst()
.isPresent();
}
}
登录。文本
Test, Password
Test2, Password2
# 1 楼答案
删除txt中逗号后的空格,或将
String[] res = ligne.split(",")
行更改为使用空格String[] res = ligne.split(", ")
拆分