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

请教运行后提示Exception in thread "main" java.lang.NullPointerException

请教运行后提示Exception in thread "main" java.lang.NullPointerException

慕无忌1213685 2016-05-25 16:31:25
package com.imooc.collection;import java.util.HashMap;import java.util.Map;import java.util.Scanner;import java.util.Set;public class MapTest { /** * 用来承装学生类型对象 */ public Map<String,Student> students; /* * 在构造器中初始化students属性 */ public void MapTest(){ this.students = new HashMap<String,Student>(); } /* * 测试添加:输入学生ID,判断是否被占用,若未被占用,则输入学生姓名, * 创建新学生对象,并且添加到students中 */ public void tsetPut(){ //创建一个Scanner对象,用来获取输入的学生ID和姓名 Scanner console = new Scanner(System.in); int i = 0; while(i<3){ System.out.println("请输入学生ID:"); String ID = console.next(); //判断该ID是否被占用 Student st = students.get(ID); if(st == null){ //提示输入学生姓名 System.out.println("请输入学生姓名:"); String name = console.next(); //创建新的学生对象 Student newStudent = new Student(ID,name); //通过students的put方法,添加ID-学生映射 students.put(ID, newStudent);// System.out.println("成功添加学生:"+students.values()); System.out.println("成功添加学生:"+students.get(ID).name); i++; }else{ System.out.println("该学生ID已被占用!"); continue; } } } /* * 测试Map的keySet方法 */ public void testKeySet(){ //通过keyset方法,返回Map中的所有“键”的Set集合 Set<String> keySet = students.keySet(); //取得students的容量 System.out.println("总共有" + students.size() + "个学生!"); //遍历keySet取得每一个键,再调用get()方法取得每个键对应的value for(String stuId:keySet){ Student st = students.get(stuId); if(st != null){ System.out.println("学生:" + st.name); } } } public static void main(String[] args) { MapTest mt = new MapTest(); mt.tsetPut(); mt.testKeySet(); }}
查看完整描述

13 回答

已采纳
?
陌颜enjoy

TA贡献1条经验 获得超2个赞

你所说的那个构造器的问题,你写的是一般函数哪里是什么构造器,当然不会执行里面的那句都没有调用

查看完整回答
2 反对 回复 2016-05-26
?
慕粉1463556065

TA贡献1条经验 获得超1个赞

再说详细一点..

查看完整回答
1 反对 回复 2016-07-11
?
快过来让我看看

TA贡献4条经验 获得超2个赞

完整代码贴上来啊,目前看来应该是students没有实例化

查看完整回答
1 反对 回复 2016-05-25
?
来自星星的我风格很好奇gfcccbv

TA贡献1条经验 获得超0个赞

确实有问题

查看完整回答
反对 回复 2016-07-11
?
说好的幸福626

TA贡献11条经验 获得超1个赞

。。。。

查看完整回答
反对 回复 2016-07-11
?
Aaaa64

TA贡献9条经验 获得超0个赞

应该是main方法里的问题

查看完整回答
反对 回复 2016-07-11
?
朵朵熙熙丶

TA贡献21条经验 获得超9个赞

应该是main方法

查看完整回答
反对 回复 2016-07-11
?
相敬如宾

TA贡献3条经验 获得超1个赞

//img1.sycdn.imooc.com//57498fd7000173dd09030350.jpg这两个不应该要一样的吗?还有25行不是应该改成public static void MapTst(){}这样吗?

查看完整回答
反对 回复 2016-05-28
?
留给沿海地带

TA贡献1条经验 获得超0个赞

你看下你这行,Student st = student.get(ID); 等号右边的student,第一个字母s你写的是小写的,你应该只是在上面定义了一个Student student,但是并没有给它实例化

查看完整回答
反对 回复 2016-05-26
?
没看完

TA贡献8条经验 获得超3个赞

仅仅设置一个ID,要打名字的时候当然会出空指针异常了

查看完整回答
反对 回复 2016-05-26
?
冰山点水

TA贡献109条经验 获得超149个赞

把代码全部贴出来看看

查看完整回答
反对 回复 2016-05-25
?
慕姐6731210

TA贡献1条经验 获得超0个赞

因该是main方法出问题了


查看完整回答
反对 回复 2016-05-25
  • 13 回答
  • 4 关注
  • 1981 浏览

添加回答

举报

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