students.get(ID).name 为什么不能替换成 st.name,试过会报错
老师的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++; } } 希望对你有帮助!!:)
为什么我这样改的就没有报错