统计员工个数的方法
package com.imooc.renyuan; public class Bumen { //属性 private int bmNumber; private String bmName; private Yuangong[] yuangong; int count; //构造方法 public Bumen(int bmNumber,String bmName) { this.setBmNumber(bmNumber); this.setBmName(bmName); } //构造set/get方法 public void setBmNumber(int bmNumber) { this.bmNumber=bmNumber; } public int getBmNumber() { return bmNumber; } public void setBmName(String bmName) { this.bmName=bmName; } public String getBmName() { return bmName; } public void setYuangong(Yuangong[] yuangong) { this.yuangong=yuangong; } public Yuangong[] getYuangong() { if(this.yuangong==null) { this.yuangong=new Yuangong[200]; } return yuangong; } public void setCount(int count) { this.count=count; } public int getCount() { return count; } //统计该部门员工个数的方法 public void addNumber(Yuangong yuangong) { for(int i=0;i<this.getYuangong().length;i++) { if(this.getYuangong()[i]==null) { yuangong.setBmName(this); this.getYuangong()[i]=yuangong; this.count=i+1; return; } } }
这是部门这个类中的代码,想问的是最后统计员工个数的方法里
yuangong.setBmName(this);
这一句报错,红线画在setBmName下面,想知道哪里出了问题,应该怎么改
正在回答
综合代码来看,应该将员工类中部门属性定义为对象类型,即private Bumen bumen,同时修改对应的getter和setter方法以及构造方法;这样在addNumber方法中就可以调用员工的所属部门属性的setter方法完成属性的赋值,即作业中报错的地方改为yuangong.setBumen(this);同时修改员工类的infor方法中对于部门的取值,改为getBumen().getBmName()。
同时,也建议将员工类中的职位属性定义为对象类型,即private Zhiwu zhiwu;同时修改对应的getter和setter方法以及构造方法。
测试类中,对象的初始化时也应该做调整,例如
Yuangong yuangong=new Yuangong("张铭","S001",29,"男",bumen,zhiwu3);
如果解决了你的疑惑,请采纳,祝学习愉快 ~
我把我后面的代码发出来吧,麻烦老师看下问题在哪,顺便看看有什么改进的地方吧
package com.imooc.renyuan; public class Zhiwu { //属性 private int jobNumber; private String job; //构造方法 public Zhiwu(int jobNumber,String job) { this.setJobNumber(jobNumber); this.setJob(job); } //构造set/get方法 public void setJobNumber(int jobNumber) { this.jobNumber=jobNumber; } public int getJobNumber() { return jobNumber; } public void setJob(String job) { this.job=job; } public String getJob() { return job; } }
package com.imooc.renyuan; public class Yuangong { //属性 private String name; private String number; private int age; private String sex; private String bumen; private String job; //构造set/get方法 public void setName(String name) { this.name=name; } public String getName() { return name; } public void setNumber(String number) { this.number=number; } public String getNumber() { return number; } //对年龄进行限制 public void setAge(int age) { if(age>65||age<18) { age=18; } this.age=age; } public int getAge() { return age; } //对性别进行限制 public void setSex(String sex) { if(sex.equals("女")) { sex="女"; } else { sex="男"; } this.sex=sex; } public String getSex() { return sex; } public void setBumen(String bumen) { this.bumen=bumen; } public String getBumen() { return bumen; } public void setJob(String job) { this.job=job; } public String getJob() { return job; } //创建构造方法 public Yuangong(String name,String number,int age,String sex,String bumen,String job) { this.setName(name); this.setNumber(number); this.setAge(age); this.setSex(sex); this.setBumen(bumen); this.setJob(job); } //创建员工自我介绍信息的方法,将员工信息作为字符串返回 public String infor() { String str="姓名:"+getName()+"\r\n工号:"+getNumber()+"\r\n年龄:"+getAge()+"\r\n性别:"+getSex()+"\r\n所属部门:"+getBumen()+"\r\n职务信息:"+getJob(); return str; } }
package com.imooc.ceshi; import com.imooc.renyuan.Bumen; import com.imooc.renyuan.Yuangong; import com.imooc.renyuan.Zhiwu; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //创建对象 Bumen bumen=new Bumen(1,"人事部"); Bumen bumen1=new Bumen(2,"市场部"); Zhiwu zhiwu=new Zhiwu(3,"职员"); Zhiwu zhiwu2=new Zhiwu(4,"助理"); Zhiwu zhiwu3=new Zhiwu(5,"经理"); //输出员工信息 Yuangong yuangong=new Yuangong("张铭","S001",29,"男","人事部","经理"); Yuangong yuangong1=new Yuangong("李艾爱","S002",21,"女","人事部","助理"); Yuangong yuangong2=new Yuangong("孙超","S003",29,"男","人事部","职员"); Yuangong yuangong3=new Yuangong("张美美","S004",26,"女","市场部","职员"); Yuangong yuangong4=new Yuangong("蓝迪","S005",37,"男","市场部","经理"); Yuangong yuangong5=new Yuangong("米莉","S006",24,"女","市场部","职员"); System.out.println(yuangong.infor()); System.out.println("========================================"); System.out.println(yuangong1.infor()); System.out.println("========================================"); System.out.println(yuangong2.infor()); System.out.println("========================================"); System.out.println(yuangong3.infor()); System.out.println("========================================"); System.out.println(yuangong4.infor()); System.out.println("========================================"); System.out.println(yuangong5.infor()); System.out.println("========================================"); //导入职员信息 bumen.addNumber(yuangong); bumen.addNumber(yuangong1); bumen.addNumber(yuangong2); bumen1.addNumber(yuangong3); bumen1.addNumber(yuangong4); bumen1.addNumber(yuangong5); //测试各部门人数 System.out.println(bumen.getBmName()+"总共有"+bumen.getCount()+"名员工"); System.out.println(bumen1.getBmName()+"总共有"+bumen1.getCount()+"名员工"); } }
应该是空指针异常,我编的时候也是这样,结果是在定义属性的时候就直接初始化了,后来经过了解,要把get方法里判断空指针的if语句放到你for循环里面,把for循环里面的if换掉这样就可以了,我debug了下,发现程序根本就不会跑到get方法里面去判断,也不知道为什么,希望可以帮到你.......
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星