使用Java Scanner向空对象赋值读取属性返回null问题求助
问题原因
你调用无参构造方法创建sr2实例后,仅将Scanner读取到的用户输入存储在了局部变量setFirstName中,没有调用StudentRecord类中定义的setter方法将输入值绑定到sr2的对应成员属性上。无参构造初始化的对象所有未赋值的引用类型属性默认值为null,因此调用sr2.getFirstName()时返回的就是null值。
修复方法
在读取到用户输入后,调用对应setter方法完成赋值即可,修改后的代码片段如下:
StudentRecord sr2 = new StudentRecord(); Scanner userInput = new Scanner (System.in); System.out.println("Please Enter Student's First Name: "); String inputFirstName = userInput.nextLine(); // 调用setter方法将输入值绑定到sr2对象的firstName属性 sr2.setFirstName(inputFirstName); System.out.println("New Student First Name: " + sr2.getFirstName());
如果需要录入学生的姓氏、学号、成绩等其他属性,按照相同逻辑读取用户输入后,调用对应的setLastName()、setStudentID()、setGradeCourseOne()方法赋值即可。
内容的提问来源于stack exchange,提问作者Dragamaroon
相关产品推荐
相关产品推荐

