求助 HashMap put方法 报错NullPointerException
本帖最后由 cfrex 于 2013-07-18 10:21:45 编辑 新手学习,还没学过泛型,所以不用泛型.程序运行到添加对象到HashMap时,就报NullPointerException...
/*
* 用HashMap 做学生管理
*/
import java.util.*;
public class Studentmanager {
public static void main(String[] args) {
Stumanager man=new Stumanager();
Scanner reader=new Scanner(System.in);
while(true) //选择界面
{
System.out.println("1:添加学生");
System.out.println("2:显示学生信息");
System.out.println("3:修改学生成绩");
System.out.println("4:删除学生");
System.out.println("5:退出");
int rd=reader.nextInt();
if(rd==1) //添加学生
{
System.out.println("输入学号");
int stuno=reader.nextInt();
System.out.println("输入姓名");
String name=reader.next();
System.out.println("输入学生成绩");
int score=reader.nextInt();
Student stu1=new Student(stuno,name,score);
man.add(stuno,stu1);
}
else if(rd==2) //显示学生信息
{
System.out.println("输入学号");
int stuno=reader.nextInt();
man.info(stuno);
}
else if(rd==3) //修改成绩
{
System.out.println("输入学号");
int stuno=reader.nextInt();
Student stu=(Student) man.hm1.get(stuno);
System.out.println("原成绩为"+stu.getScore());
System.out.println("输入学生新成绩");
int score=reader.nextInt();
man.scomod(stuno, score);
}
else if(rd==4) // 删除学生信息
{
System.out.println("输入学号");
int stuno=reader.nextInt();
man.studel(stuno);
}
else if(rd==5)
{
System.exit(0);
}
}
}
}
//学生管理类
class Stumanager
{
HashMap hm1=null;
public Stumanager()
{
HashMap hm1=new HashMap();
}
//添加学生
public void add(int stuno,Student stu)
{
System.out.println("开始要加入hm1");
hm1.put(stuno, stu);
}
//显示学生信息
public void info (int stuno)
{
if(hm1.containsKey(stuno))
{
Student stu=(Student) hm1.get(stuno);
System.out.println("姓名:"+stu.getName());
System.out.println("学号:"+stu.getStuno());
System.out.println("成绩:"+stu.getScore());
}
}
//修改学生成绩
public void scomod (int stuno,int score)
{
if(hm1.containsKey(stuno))
{
Student stu=(Student) hm1.get(stuno);
stu.setScore(score);
}
}
//删除学生
public void studel (int stuno)
{
hm1.remove(stuno);
}
}
//学生类
class Student
{
private int stuno; //学号
private String name; //姓名
private int score; //成绩
public Student(int stuno, String name, int score) //学生类构造方法
{
this.stuno = stuno;
this.name = name;
this.score = score;
}
public int getStuno() {
return stuno;
}
public void setStuno(int stuno) {
this.stuno = stuno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
HashMap Java put
[解决办法]
楼主将Stumanager类中的
public Stumanager()
{
HashMap hm1=new HashMap();
}
改为
public Stumanager()
{
hm1=new HashMap();
}
就行了。很明显是对象没搞清楚啊
[解决办法]
public Stumanager()
{
HashMap hm1=new HashMap();
}
改成
public Stumanager()
{
hm1=new HashMap();
}