【发布时间】:2014-03-04 18:25:32
【问题描述】:
我正在尝试将文本文件中的用户名和密码组合列表(每行包含由空格分隔的用户名密码对)到名为 userList 的 ArrayList 中。 User 构造函数接受两个字符串,将它们设置为用户名和密码。这应该很简单,但是由于某种原因,当我在以下代码之后遍历数组时,所有用户都具有相同的用户名和密码(文本文件中的最后一行)。
见下面的代码:
BufferedReader br = new BufferedReader(new FileReader("user_pass.txt"))
String line, username, password;
while ((line = br.readLine()) != null) {
String separated[] = line.split(" ");
username = separated[0];
password = separated[1];
userList.add(new User(username,password));
}
这是我遍历数组列表的方式:
for(User u : userList){
System.out.println(u.getUsername()+" --> "+u.getPassword());
}
这是用户类:
公共类用户{
private static String username;
private static String password;
public User(String u, String p) {
username = u;
password = p;
}
public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
【问题讨论】:
-
您可以发布您的用户类的代码吗?每次循环迭代的用户名和密码的值是多少?
-
username和password字段是否是静态的? -
以纯文本形式(例如在您的 user_pass.txt 文件中)存储用户名和密码组合绝不是一个好主意。你应该先纠正这个问题。
-
当我在每次迭代时打印用户名和密码的值时它们都很好(即文件读取和字符串拆分工作正常)。
-
@ErstwhileIII - 谁说它们是纯文本?文件中的密码也可以是 SHA 哈希,或类似的。