为了账号安全,请及时绑定邮箱和手机立即绑定

MapTest中putTest()方法这句/*StudentCls stu=students.get(ID);*/报空指针异常,求解!!!

MapTest中putTest()方法这句/*StudentCls stu=students.get(ID);*/报空指针异常,求解!!!

_坐看云起时 2016-04-12 21:59:35
import java.util.HashSet; import java.util.Set; /**  * 学生类  * @author Administrator  *  */ public class StudentCls { public String name; public String id; // public Set<CourseCls> couSet; public StudentCls(String name,String id){ this.name=name; this.id=id; // this.couSet=new HashSet<CourseCls>(); } } import java.util.*; public class MapTest { public Map<String, StudentCls> students; public void putTest(){ Scanner sca=new Scanner(System.in); int i=0; while(i<3){ System.out.println("请输入学生ID"); String ID=sca.next(); StudentCls stu=students.get(ID); if(stu==null){ System.out.println("请输入学生姓名:"); String name=sca.nextLine(); StudentCls newstu=new StudentCls(name, ID); students.put(ID, newstu); System.out.println("成功添加学生"+students.get(ID).name); i++; } else{ System.out.println("已有该学生!"); } } } public void ketSet(){ Set<String> keyset=students.keySet(); System.out.println("总共有"+keyset.size()+"个学生"); for(String id:keyset){ StudentCls stu=students.get(id); if(stu!=null){ System.out.println("学生:"+stu.name); } } } public static void main(String[] args) { MapTest mt=new MapTest(); mt.putTest(); mt.ketSet(); } }
查看完整描述

1 回答

已采纳
?
guozhchun

TA贡献103条经验 获得超76个赞

students 只是声明了并没有定义,其是一个null,因此在调用students.get(ID)时会报错。

可以定义一个构造函数给students赋值,也可以直接在声明时定义:

public Map<String, StudentCls> students = new HashMap<String, StudentCls>();


查看完整回答
1 反对 回复 2016-04-12
  • 1 回答
  • 0 关注
  • 1705 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信