代碼中63行,st什么時候會是null
put()方法中,Key參數和Value參數都是一一對應輸入的,因此應該是有Key值必有Value值啊,什么時候會出現有Key值但是卻沒Value值得情況?
package?com.imooc.collection; import?java.util.HashMap; import?java.util.Map; import?java.util.Map.Entry; import?java.util.Scanner; import?java.util.Set; public?class?MapTest?{ /** ?*?用來承裝學生類型對象 ?*/ public?Map<String,?Student>?students; /** ?*?在構造器中初始化students屬性 ?*/ public?MapTest()?{ this.students?=?new?HashMap<String,?Student>(); } /** ?*?測試添加:輸入學生ID,判斷是否被占用?若未被占用,則輸入姓名,創建新學生對象,并且?添加到students中 ?*/ public?void?testPut()?{ //?創建一個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.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); } } /** ?*?測試刪除Map中的映射 ?*/ public?void?testRemove()?{ //?獲取從鍵盤輸入的待刪除學生ID字符串 Scanner?console?=?new?Scanner(System.in); while?(true)?{ //?提示輸入待刪除的學生的ID System.out.println("請輸入要刪除的學生ID!"); String?ID?=?console.next(); //?判斷該ID是否有對應的學生對象 Student?st?=?students.get(ID); if?(st?==?null)?{ //?提示輸入的ID并不存在 System.out.println("該ID不存在!"); continue; } students.remove(ID); System.out.println("成功刪除學生:"?+?st.name); break; } } /** ?*?通過entrySet方法來遍歷Map ?*/ public?void?testEntrySet()?{ //?通過entrySet方法,返回Map中的所有鍵值對 Set<Entry<String,?Student>>?entrySet?=?students.entrySet(); for?(Entry<String,?Student>?entry?:?entrySet)?{ System.out.println("取得鍵:"?+?entry.getKey()); System.out.println("對應的值為:"?+?entry.getValue().name); } } /** ?*?利用put方法修改Map中的已有映射 ?*/ public?void?testModify()?{ //?提示輸入要修改的學生ID System.out.println("請輸入要修改的學生ID:"); //?創建一個Scanner對象,去獲取從鍵盤上輸入的學生ID字符串 Scanner?console?=?new?Scanner(System.in); while?(true)?{ //?取得從鍵盤輸入的學生ID String?stuID?=?console.next(); //?從students中查找該學生ID對應的學生對象 Student?student?=?students.get(stuID); if?(student?==?null)?{ System.out.println("該ID不存在!請重新輸入!"); continue; } //?提示當前對應的學生對象的姓名 System.out.println("當前該學生ID,所對應的學生為:"?+?student.name); //?提示輸入新的學生姓名,來修改已有的映射 System.out.println("請輸入新的學生姓名:"); String?name?=?console.next(); Student?newStudent?=?new?Student(stuID,?name); students.put(stuID,?newStudent); System.out.println("修改成功!"); break; } } /** ?*?@param?args ?*/ public?static?void?main(String[]?args)?{ MapTest?mt?=?new?MapTest(); mt.testPut(); mt.testKeySet(); //?mt.testRemove(); //?mt.testEntrySet(); //?mt.testModify(); //?mt.testEntrySet(); } }
2016-12-27
大哥,你把代碼貼出來行嗎?