新人求助,hashmap报错

shenghai01 2019-09-20 08:03:24
大家帮忙看看。新手学习.程序运行到添加对象到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)
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenghai01 2019-09-20
  • 打赏
  • 举报
回复
嗯嗯,自己也发现了,多谢!
瘦死的黑骆驼 2019-09-20
  • 打赏
  • 举报
回复
Set<String>set=hm.keySet();hm是null,你没有初始化
shenghai01 2019-09-20
  • 打赏
  • 举报
回复
补充下,是在输入“1”后,进入case1下,然后输入了用户名,密码后,就出现这个报错

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧