可否问下各位教师,关于人数统计的问题

可否问下各位教师,关于人数统计的问题

public void addWorker(Worker wo) {
		for(int i=0;i<this.getMyWorkers().length;i++)
			if(this.getMyWorkers()[i]==null) {
				this.getMyWorkers()[i]=wo;
				if(wo.getWorkerApartment().apartmentNum==this.apartmentNum)
					workerNum++;return;
			}
	}
public class Test {

	public static void main(String[] args) {
		Apartment ap1 = new Apartment("人事部",1);
		Apartment ap2 = new Apartment("市场部",2);
		
		Position po1 = new Position("经理");
		Position po2 = new Position("助理");
		Position po3 = new Position("职员");
		
		Worker wo1 = new Worker("张铭","S001","男",29,ap1,po1);
		Worker wo2 = new Worker("李艾爱","S002","女",21,ap1,po2);
		Worker wo3 = new Worker("孙超","S004","男",29,ap1,po3);
		Worker wo4 = new Worker("张美美","S005","女",26,ap2,po3);
		Worker wo5 = new Worker("蓝迪","S006","男",37,ap2,po1);
		Worker wo6 = new Worker("米莉","S007","女",24,ap2,po3);
		
		System.out.println(wo1.introduction());
		System.out.println("==================");
		System.out.println(wo2.introduction());
		System.out.println("==================");
		System.out.println(wo3.introduction());
		System.out.println("==================");
		System.out.println(wo4.introduction());
		System.out.println("==================");
		System.out.println(wo5.introduction());
		System.out.println("==================");
		System.out.println(wo6.introduction());
		System.out.println("==================");
		
		ap1.addWorker(wo1);
		ap1.addWorker(wo2);
		ap1.addWorker(wo3);
		ap1.addWorker(wo4);
		ap1.addWorker(wo5);
		ap1.addWorker(wo6);
		System.out.println(ap1.getApartmentName()+"共有"+ap1.getWorkerNum()+"名员工");
		
		ap2.addWorker(wo1);
		ap2.addWorker(wo2);
		ap2.addWorker(wo3);
		ap2.addWorker(wo4);
		ap2.addWorker(wo5);
		ap2.addWorker(wo6);
		System.out.println(ap2.getApartmentName()+"共有"+ap2.getWorkerNum()+"名员工");
	}
}

2)部门类的统计该部门员工个数的方法实现功能不完整,统计该部门员工个数的方法,即添加员工的方法,参数类型为员工类型,循环遍历员工数组,如果数组元素为null,将传进来的参数赋值给当次循环的数组元素,并设置其所属部门,统计员工个数的变量+1;退出循环

一开始不是设置好员工的属性(包括所属部门)了吗,有点无法理解

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

部门类中的员工数量属性,开始只有初始值,需要根据实际人数(特别是执行添加员工处理)计算得到这个值。这个值也不能直接通过数组长度得到,因为里面包含空的数组元素。

另外你的addWorker(Worker wo)方法中无需添加apartmentNum的相等判断,只要赋值就更新workerNum的值

  • Protogensis 提问者 #1
    apartmenyNum相等的判断是用来判断是否是同一个部门用的。不进行判断如何才能实现此功能。 问题中的并设置其部门属性感觉没有必要,一开始就已经给员工赋值了 public void addWorker(Worker wo) { for(int i=0;i<this.getMyWorkers().length;i++) if(this.getMyWorkers()[i]==null&wo.getWorkerApartment().apartmentNum==this.apartmentNum) { this.getMyWorkers()[i]=wo; workerNum++; return; } }
    2019-01-02 17:34:51
  • Protogensis 提问者 #2
    public void addWorker(Worker wo) { for(int i=0;i<this.getMyWorkers().length;i++) if(this.getMyWorkers()[i]==null&wo.getWorkerApartment().apartmentNum==this.apartmentNum) { wo.setWorkerApartment(this); this.getMyWorkers()[i]=wo; workerNum=i+1; return; } }//然后就变成了这样
    2019-01-02 17:48:15
  • irista23 回复 提问者 Protogensis #3
    同一个部分是通过在测试类中创建不同的部门对象来区分的,不在部门类中区分。这个部门员工数量属性开始如果调用addWorker()得到的apartmentNum就是初始值,由于this.getMyWorkers()[i]==null,apartmentNum进不到条件里计算
    2019-01-02 18:33:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师