为了账号安全,请及时绑定邮箱和手机立即绑定

使用get(ID).name获取学生姓名和直接用st.name有什么区别

students.get(ID).name 为什么不能替换成 st.name,试过会报错


正在回答

3 回答

老师的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++;
    }
}

希望对你有帮助!!:)


0 回复 有任何疑惑可以回复我~

为什么我这样改的就没有报错

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

使用get(ID).name获取学生姓名和直接用st.name有什么区别

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信