大家帮忙看看。新手学习.程序运行到添加对象到HashMap时,就报NullPointerException... 
//学生类
public class User {
private String username;
private String password;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}


}//学生类接口,有登录和注册public interface UserDao {
public abstract boolean login(String username,String password);
public abstract void regist(String username,String password);
}
//接口实现类
import java.util.HashMap;
import java.util.Set;public class UserDaoImp  implements UserDao{
private static HashMap<String, String>hm;
@Override
public boolean login(String username, String password) {
// TODO Auto-generated method stub
boolean flag=false;
Set<String>set=hm.keySet();
if(hm!=null){
for(String key:set){
String value=hm.get(key);
if(username.equals(key) && password.equals(value)){
flag=true;
break;
}

}
}

return flag;
} @Override
public void regist(String username, String password) {

hm.put(username, password);
}
}//主方法入口
import java.util.Scanner;public class UserTest {
public static void main(String[] args) {
System.out.println("欢迎来到登录注册测试系统,1.登录;2.注册;3.退出.请输入你的选择");
Scanner sc=new Scanner(System.in);
String choicestring=sc.nextLine();
int choice=Integer.parseInt(choicestring);
UserDaoImp udi=new UserDaoImp();

switch (choice) {
case 1:
System.out.println("请输入你的用户名");
String username=sc.nextLine();

System.out.println("请输入你的密码");
String password=sc.nextLine();

if(udi.login(username, password)){
System.out.println("登录成功");
}
break;
case 2:
System.out.println("请输入你的用户名");
String newusername=sc.nextLine();
System.out.println("请输入你的密码");
String newpassword=sc.nextLine();
udi.regist(newusername, newpassword);
break;
case 3:
System.exit(0);
break;
default:
System.out.println("输入错误");
break;
}
}
}现象是在运行主方法时,不管是选1登录,或者选2注册都报空指针异常,报错如下:
登录时报错:
Exception in thread "main" java.lang.NullPointerException
at UserDaoImp.login(UserDaoImp.java:10)
at UserTest.main(UserTest.java:19)注册时报错:
Exception in thread "main" java.lang.NullPointerException
at UserDaoImp.regist(UserDaoImp.java:28)
at UserTest.main(UserTest.java:28)