使用get(ID).name获取学生姓名和直接用st.name有什么区别
students.get(ID).name 为什么不能替换成 st.name,试过会报错
students.get(ID).name 为什么不能替换成 st.name,试过会报错
2020-07-24
老师的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++;
}
}
希望对你有帮助!!:)举报