代碼和老師一樣,為什么到Student st = students.get(ID);這一步就不能執(zhí)行啦?
package com.imooc.cellection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class TestMap {
//用來承裝學生類型的對象
public Map<String,Student> students;
//構(gòu)造方法對students實例化
public void testMap(){
this.students = new HashMap<String,Student>();
}
/*
* 測試添加:輸入學生ID,判斷是否被占用,
* 若未被占用,則輸入學生姓名,創(chuàng)建新的學生對象,并且添加到students中
* @param args
*/
public void testPut(){
//創(chuàng)建Scanner對象,獲取學生的ID和姓名
Scanner con = new Scanner(System.in);?
int i=0;
while(i<3){
System.out.println("請輸入學生的ID:");
String ID = con.next();
//判斷學生的ID是否被占用
Student st = students.get(ID);
if(st==null){
System.out.println("請輸入學生姓名:");
String name = con.next();
//創(chuàng)建一個新的學生對象來接受輸入的ID和name
Student newStudent = new Student(ID, name);
//把ID和新創(chuàng)建的學生對象(前面定義了students中value只能存放student類型的)添加到students中去
students.put(ID, newStudent);
System.out.println("成功添加學生:"+students.get(ID).name);
i++;
}else{
System.out.println("學生已存在!");
continue;
}
}
}
public void testKeySet(){
System.out.println("一共添加"+students.size()+"個學生!");
//調(diào)用Map的KeySet()方法,獲取Map中"鍵"的集合
Set<String> KeySet = students.keySet();
//遍歷KeySet()方法取得每一個鍵,再調(diào)用get()方法取得每一個key所對應的value
for (String studentID : KeySet) {
Student st = students.get(studentID);
if(st != null){
System.out.println("學生:"+st.name);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestMap tm = new TestMap();
tm.testPut();
tm.testKeySet();
}
}
下面是錯誤截圖:
2016-04-06
你將開頭map構(gòu)造方法中的void去掉就可以了,構(gòu)造方法是不能加void的
2016-04-05
,代碼太長,沒看,錯誤的提示就是你在31行和64行用一個null對象調(diào)用了它的某一個方法,看看是不是對象弄錯了