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

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

1
2
3
4
5
6
7
8
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;
            }
    }
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
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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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