代碼是按照老師的寫(xiě)的,運(yùn)行到student st=students.get(ID);拋出異常
請(qǐng)輸入學(xué)生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("請(qǐng)輸入學(xué)生ID");
??String ID=console.next();
??student st=students.get(ID);
???if(st==null)
??{
???System.out.println("請(qǐng)輸入學(xué)生的名字");
?String name=console.next();
?student newStudent=new student(ID,name);
?students.put(ID, newStudent);
?System.out.println("成功添加學(xué)生"+students.get(ID).name);
?i++; ???
??}
??else
??{System.out.println("改ID已經(jīng)被占用");
??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()+"個(gè)學(xué)生");
?for(String stuID:keyset)
?{
??student st=students.get(stuID);
??if(st!=null)
??{
???System.out.println("學(xué)生:"+st.name);
??}
?}
?}
}
求大神幫忙解答
2016-01-20
構(gòu)造方法的格式是 ?修飾詞+類名{} 和返回值有關(guān)的都不能加
2015-07-12
問(wèn)題原因已經(jīng)找到,初始化students時(shí),用了pupublic void testMap()
{
? ?this.students=new HashMap<String,student>();
}
構(gòu)造方法使用了void,相當(dāng)于并未對(duì)students進(jìn)行初始化,所以指針指向?yàn)榭眨x謝各位的關(guān)注