課程
/后端開發
/Java
/Java入門第三季
students.get(ID).name 為什么不能替換成 st.name,試過會報錯
2020-07-24
源自:Java入門第三季 5-2
正在回答
老師的testPut方法如下(應該是一模一樣的) (多行注釋的地方是我解釋的部分) public?void?testPut()?{ ????//創建一個Scanner對象,用來獲取輸入的學生ID和姓名 ????Scanner?input=new?Scanner(System.in); ????int?i=0; ????while(i<3)?{ ????????System.out.println("請輸入學生ID:"); ????????String?ID=input.next(); ????????//判斷該ID是否被占用 ????????Student?st=students.get(ID); ????????/* ????????*這里的st是Student類的一個對象, ????????*是輸入的ID(key)對應的value ????????*但此時的st不知道他是不是空值(null) ????????*/ ????????if(st==null)?{ ????????????//提示輸入學生姓名 ????????????System.out.println("請輸入學生姓名:"); ????????????String?name=input.next(); ????????????//創建新的學生對象 ????????????Student?newStudent=new?Student(ID,name); ????????????/* ????????????*這里的newStudent是Student的一個對象 ????????????*用于在students集中存入一個鍵值對 ????????????*/ ????????????//通過調用students的put方法,添加“ID-學生”映射 ????????????students.put(ID,?newStudent); ????????????/* ????????????*要注意的是,此時的st是空值(null) ????????????*而當要輸出對象的屬性時對象為null,就會拋出異常 ????????????*所以可以把“students.get(ID).name”改成“newStudent.name” ????????????*此時就不會拋出異常 ????????????*/ ????????????System.out.println("成功添加學生:"+students.get(ID).name); ????????}else?{ ????????????System.out.println("該學生的ID已被占用!"); ????????????continue; ????????} ????????i++; ????} } 希望對你有幫助!?。海?/pre>
為什么我這樣改的就沒有報錯
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答學生姓名不能使用中文
3 回答用Calendar獲取date 和 用Date直接獲得 這兩者有什么區別?正常這兩種的使用場景是什么?
4 回答students.put(ID,newStudent); 這里面添加iD和學生的映射關系 為什么要用newStudent ,而不直接用name
2 回答為什么我的獲取不到Id和name?
1 回答為什么是這樣獲取學生的名字
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-07-26
2020-08-07
為什么我這樣改的就沒有報錯