亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

代碼是按照老師的寫的,運行到student st=students.get(ID);拋出異常

請輸入學生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 回答

構造方法的格式是 ?修飾詞+類名{} 和返回值有關的都不能加

0 回復 有任何疑惑可以回復我~

問題原因已經找到,初始化students時,用了pupublic void testMap()
{
? ?this.students=new HashMap<String,student>();
}

構造方法使用了void,相當于并未對students進行初始化,所以指針指向為空,謝謝各位的關注

3 回復 有任何疑惑可以回復我~
#1

慕粉2141069558

我也遇到了相同的情況,您是怎么解決的呢?
2017-04-08 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

代碼是按照老師的寫的,運行到student st=students.get(ID);拋出異常

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號