代码是按照老师的写的,运行到student st=students.get(ID);抛出异常

来源:5-2 学生选课---使用 Map 添加学生

qq_Faraward_0

2015-07-12 17:04

请输入学生ID
1
Exception in thread "main" java.lang.NullPointerException
 at com.zhou.jihe.testMap.testput(testMap.java:24)
 at com.zhou.jihe.testMap.main(testMap.java:43)

package com.zhou.jihe;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class testMap {
public Map<String,student> students;

public void testMap()
{
    this.students=new HashMap<String,student>(); 
}
public void testput()
 {
 
 Scanner console=new Scanner(System.in);
 int i=0;
 while(i<3)
 {
  System.out.println("请输入学生ID");
  String ID=console.next();
  student st=students.get(ID);
   if(st==null)
  {
   System.out.println("请输入学生的名字");
 String name=console.next();
 student newStudent=new student(ID,name);
 students.put(ID, newStudent);
 System.out.println("成功添加学生"+students.get(ID).name);
 i++;    
  }
  else
  {System.out.println("改ID已经被占用");
  continue;
  }
 }
 
 }
public static void main(String[] args) {
 testMap tm=new testMap();
 tm.testput();
 tm.testKeySet();
// student s=new student("1","小明");
// System.out.println(s.id);
}
public void testKeySet()
{
 Set<String> keyset=students.keySet();
 System.out.println("总共有"+students.size()+"个学生");
 for(String stuID:keyset)
 {
  student st=students.get(stuID);
  if(st!=null)
  {
   System.out.println("学生:"+st.name);
  }
 }
 }
}

求大神帮忙解答

写回答 关注

2回答

  • jetbbb
    2016-01-20 08:56:06

    构造方法的格式是  修饰词+类名{} 和返回值有关的都不能加

  • qq_Faraward_0
    2015-07-12 17:42:29

    问题原因已经找到,初始化students时,用了pupublic void testMap()
    {
       this.students=new HashMap<String,student>();
    }

    构造方法使用了void,相当于并未对students进行初始化,所以指针指向为空,谢谢各位的关注

    慕粉2141...

    我也遇到了相同的情况,您是怎么解决的呢?

    2017-04-08 15:47:28

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题