package user.pojo;public class User {
private int ID;
private String name;
private String password;public User(int id, String name, String password) {
super();
ID = id;
this.name = name;
this.password = password;
}
public int getID() {
return ID;
}
public void setID(int id) {
ID = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package user.dao;import java.util.List;import user.pojo.User;public interface UserDao {
void addUsers(User user);
//void getAllUsers(List list);
User getUserByNameAndPw(String name,String password);
}
package user.daoimp;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import user.dao.UserDao;
import user.pojo.User;public class UserDaoImp implements UserDao {
private static List list=new ArrayList();
public List getList(){
return this.list;
}
// public void getAllUsers(List list) {
// TODO Auto-generated method stub
// this.list=list;
//}
public void addUsers(User user){
list.add(user);
} @Override
public User getUserByNameAndPw(String name,String password) {
// TODO Auto-generated method stub
Iterator it=list.iterator();
User user=null;
while(it.hasNext()){
User uu=(User)(it.next());
if(uu.getName()==name&&uu.getPassword()==password)
user=uu;
}
return user;
}

}package user.factory;import user.dao.UserDao;
import user.daoimp.UserDaoImp;public class Factory {
public static UserDao getUserInstance(){

return new UserDaoImp();
}
}
package user.test;import java.io.BufferedReader;
import java.io.FileReader;import user.dao.UserDao;
import user.factory.Factory;
import user.pojo.User;public class Test { /**
 * @param args
 */
public static void main(String[] args) {
UserDao userSystem=Factory.getUserInstance();
try{
FileReader fr=new FileReader("user.txt");
BufferedReader br=new BufferedReader(fr);
String message=null;
while((message=br.readLine())!=null){
String[] cat=message.split("=");
User user=new User(Integer.parseInt(cat[0]),cat[1],cat[2]);
//System.out.println(user.getID()+user.getName()+user.getPassword());
userSystem.addUsers(user);
}
}
catch(Exception e){
e.printStackTrace();
}

User superuser=userSystem.getUserByNameAndPw("zhangsan", "23424343");
System.out.println(superuser.getID()+superuser.getName()+superuser.getPassword());//这里到底怎么了?~~~~(>_<)~~~~ 
}

}

解决方案 »

  1.   

    首先确保你的txt文件格式如下id=username=password并且读取文件路径正确至于你的代码部分嘛,改成这样@Override
    public User getUserByNameAndPw(String name, String password) {
    Iterator it = list.iterator();
    while (it.hasNext()) {
    User uu = (User) it.next();
                            //不能用== ,用equals方法进行字符串值的比较
    if (name.equals(uu.getName())&&password.equals(uu.getPassword()))
    return uu;
    }
    return null;
    }因为你是进行String的比较,你如果用==比较的话永远都不相等,==比较的是字符串对象的地址
    你改成equals 即可
      

  2.   


    不是哎,"=="是既能比较普通变量,又能比较引用变量的。对于String类型,已经自动重写了equals方法,也就是对String来说,只要两着字符相等,用"=="和equals比较都相等而且我试过了,用equals来比较的话,也不能执行。
      

  3.   


    看来你还是没有理解==和equals我已经调试过你的代码了,使用我修改后的已经运行完全正常。
      

  4.   


    啊,果然好啦!!!!谢谢谢谢,真是好人啊,这么一大段代码,真是辛苦你了。至于equals和“==”,我现在已经理解了,刚才看了一些资料。谢谢你哈。不过还没有完全理解为什么要这么来写,最后返回个null,不会把while循环中的返回值给给覆盖掉呢?