3-8作业问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package com.Imooc; public class Department { private int departmentid; private String departmentname; private Staff[] myStaff; private int staffNum; public Department(){ } public Department( int departmentid,String departmentname){ this .departmentid =departmentid; this .departmentname =departmentname; } public int getDepartmentid() { return departmentid; } public String getDepartmentname() { return departmentname; } public void setDepartmentid( int departmentid) { this .departmentid = departmentid; } public void setDepartmentname(String departmentname) { this .departmentname = departmentname; } public Staff[] getMyStaff() { if ( this .myStaff== null ) this .myStaff = new Staff[ 20 ]; return myStaff; } public int getStaffNum() { return staffNum; } public void setMyStaff(Staff[] myStaff) { this .myStaff = myStaff; } public void setPostNu( int staffNum) { this .staffNum = staffNum; } public void addStaff(Staff sta){ for ( int i= 0 ;i< this .getMyStaff().length;i++){ if ( this .getMyStaff()[i]== null ){ this .getMyStaff()[i]=sta; this .staffNum=i+ 1 ; return ; } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | package com.Imooc; public class Staff { //成员属性:员工姓名,工号,年龄,性别,所属部门,职务信息 private String staffname; private String staffid; private int staffage; private String staffsex; private Department staffdepartment; private Post staffpost; //无参构造方法 public Staff(){ } //带参构造方法,实现对属性的全部赋值 public Staff(String staffname,String staffid, int staffage,String staffsex){ this .staffname=staffname; this .staffid =staffid; this .setStaffage(staffage); this .setStaffsex(staffsex); } public String getStaffname() { return staffname; } public String getStaffid() { return staffid; } public int getStaffage() { return staffage; } public String getStaffsex() { return staffsex; } public Department getStaffdepartment() { return staffdepartment; } public Post getStaffpost() { return staffpost; } public void setStaffname(String staffname) { this .staffname = staffname; } public void setStaffid(String staffid) { this .staffid = staffid; } //设置年龄限制,必须在18-65之间,否则强制默认为18 public void setStaffage( int staffage) { if (staffage>= 18 &&staffage<= 65 ){ this .staffage = staffage; } else { this .staffage= 18 ; } } //设定性别只能是“男”或“女”,反之则设置默认为“男” public void setStaffsex(String staffsex) { if (staffsex.equals( "女" )){ this .staffsex = staffsex; } else { this .staffsex = "男" ; } } public void setStaffdepartment(Department staffdepartment) { this .staffdepartment = staffdepartment; } public void setStaffpost(Post staffpost) { this .staffpost = staffpost; } public String info(Department staffdepartment, Post staffpost){ String str= "姓名:" + this .getStaffname()+ "\n工号" + this .getStaffid()+ "\n年龄" + this .getStaffage()+ "\n性别" + this .getStaffsex()+ "\n职务:" + this .getStaffdepartment().getDepartmentname()+ this .getStaffpost().getPostname(); return str; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package com.Imooc; public class Post { private int postid; private String postname; public Post(){ } public Post( int postid,String postname){ this .postid=postid; this .postname=postname; } public int getPostid() { return postid; } public String getPostname() { return postname; } public void setPostid( int postid) { this .postid = postid; } public void setPostname(String postname) { this .postname = postname; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package com.Imooc; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Department dep1= new Department( 1 , "人事部" ); Department dep2= new Department( 2 , "市场部" ); Post po1= new Post( 1 , "经理" ); Post po2= new Post( 2 , "助理" ); Post po3= new Post( 3 , "职员" ); Staff sta1= new Staff( "张铭" , "S001" , 29 , "男" ); Staff sta2= new Staff( "李艾爱" , "S002" , 21 , "女" ); Staff sta3= new Staff( "孙超" , "S004" , 29 , "男" ); Staff sta4= new Staff( "张美美" , "S005" , 26 , "女" ); Staff sta5= new Staff( "蓝迪" , "S006" , 37 , "男" ); Staff sta6= new Staff( "米莉" , "S007" , 24 , "女" ); dep1.addStaff(sta1); dep1.addStaff(sta2); dep1.addStaff(sta3); dep2.addStaff(sta4); dep2.addStaff(sta5); dep2.addStaff(sta6); System.out.println(sta1.info(dep1,po1)); System.out.println( "=================================" ); System.out.println(sta1.info(dep1,po2)); System.out.println( "=================================" ); System.out.println(sta1.info(dep1,po3)); System.out.println( "=================================" ); System.out.println(sta1.info(dep2,po3)); System.out.println( "=================================" ); System.out.println(sta1.info(dep2,po1)); System.out.println( "=================================" ); System.out.println(sta1.info(dep2,po3)); System.out.println( "=================================" ); System.out.println( "人事部总共有" +dep1.getStaffNum()+ "名员工" ); System.out.println( "市场部总共有" +dep2.getStaffNum()+ "名员工" ); } } |
1 2 3 | Exception in thread "main" java.lang.NullPointerException at com.Imooc.Staff.info(Staff.java: 75 ) at com.Imooc.Test.main(Test.java: 24 ) |
为什么会出现空指针错误,哪里出错了?该改成什么样?
58
收起
正在回答
2回答
因为你Staff类的初始化并没有给对应的Department和Post赋值,而info()方法中你传递了部门和职务对象,但是获取值的时候部门和职务是通过Staff员工类中的部门和职务熟悉的get方法获取的,但是并没有set,所以无法获取这两个属性的值。两种修改方法都可以:
1、在Staff类中的info()方法中,直接通过staffdepartment和staffpost两个参数对象调用对应的get方法获取名称即可。
2、在Staff类中将构造方法的参数在加入部门和职务对象参数,然后在Test类中初始化员工对象的时候,可以将对应的部门和职务对象传递进去即可。
上述方式可以选择一种进行修改。
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧