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

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

代碼中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();

	}

}


正在回答

1 回答

大哥,你把代碼貼出來行嗎?

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

昵稱是JaVa 提問者

額,以為你們能看到代碼呢?,F在已經貼上了。
2016-12-27 回復 有任何疑惑可以回復我~
#2

黑胡子丶

我也才剛學不久,可能回答得不是佷好。但是一般有key值應該就有Value值,只是有時候Value值為null,或者Value中的某個屬性為null.
2016-12-28 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

代碼中63行,st什么時候會是null

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

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

幫助反饋 APP下載

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

公眾號

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