统计员工个数的方法
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 星