想利用if判断语句实现员工所属部门的人数,但感觉判断语句并没有执行

想利用if判断语句实现员工所属部门的人数,但感觉判断语句并没有执行

package com.imooc.demo;

/**

 * 部门类

 * @author JoeXLong

 *

 */

public class Ministry {

//1、部门编号 2、部门名称

private String ministryNo;

private String ministryName;

private Staff[] staffs = new Staff[200];

private Post[] posts;

private int shiNum;

private int kaiNum;

private int countNum;

public Ministry() {}

public Ministry(String ministryNo, String ministryName) {

this.setMinistryNo(ministryNo);

this.setMinistryName(ministryName);

}

public Ministry(String ministryNo, String ministryName,Staff[] staffs,Post[] posts) {

this.setMinistryNo(ministryNo);

this.setMinistryName(ministryName);

this.setStaffs(staffs);

this.setPosts(posts);

}


public String getMinistryNo() {

return ministryNo;

}


public void setMinistryNo(String ministryNo) {

this.ministryNo = ministryNo;

}


public String getMinistryName() {

if(!ministryName.equals("开发部")&&!ministryName.equals("市场部")) {

this.setMinistryName("待定");

}

return ministryName;

}


public void setMinistryName(String ministryName) {

this.ministryName = ministryName;

}

public int getCountNum() {

return countNum;

}


public void setCountNum(int countNum) {

this.countNum = countNum;

}


/**

* 获取员工信息,如果员工信息的数组未被初始化 则先进行初始化

* @return 员工信息的数组

*/

public Staff[] getStaffs() {

if(this.staffs==null) {

this.staffs = new Staff[200];

}

return staffs;

}


public void setStaffs(Staff[] staffs) {

this.staffs = staffs;

}


public int getShiNum() {

return shiNum;

}


public void setShiNum(int shiNum) {

this.shiNum = shiNum;

}


public int getKaiNum() {

return kaiNum;

}


public void setKaiNum(int kaiNum) {

this.kaiNum = kaiNum;

}


public Post[] getPosts() {

if(this.posts==null) {

this.posts = new Post[200];

}

return posts;

}


public void setPosts(Post[] posts) {

this.posts = posts;

}


public String info() {

String str = "我是:\n"+this.getMinistryName()+"\n我的编号是:\n"+this.getMinistryNo();

return str;

}

/**

* 统计总人数

* @param sta 员工

*/

public void addCountt(Staff sta) {

for(int i = 0;i<this.staffs.length;i++) {

if(this.getStaffs()[i]==null) {

sta.setMinistry(this);

this.getStaffs()[i]=sta;

this.countNum = i+1;

if(countNum!=0) {

if(this.getMinistryName()!=null & this.getMinistryName().equals("开发部")) {

shiNum++;

}

if(this.getMinistryName().equals("开发部")) {

kaiNum++;

}

return;

}

}

}

}

}


正在回答 回答被采纳积分+1

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

3回答
吃吃吃鱼的猫 2019-04-26 18:30:11

同学你好,老师在这里重新修改一下同学的代码,如下图所示:

http://img1.sycdn.imooc.com//climg/5cc2de57000152c712560451.jpg

原因如下:

  1. 数组元素初始值为0,当数组元素不为0时,表示该数组下标已经存在员工。

    当下标为i的数组元素为0时,再将加入的员工放入staffs数组。

  2. 当员工放入数组后,无需再执行其他操作,使用break跳出循环即可。

我们先在测试类中创建两个Ministry 对象。

Ministry m1=new Ministry(1,"开发");
Ministry m2=new Ministry(2,"市场");
m1.addCountt(staff1);
m1.addCountt(staff2);
m2.addCountt(staff3);

当m1对象调用addCountt方法时,获取的是开发部门的staffs数组,存放的是开发部门的所有员工,不是所有部门的总人数。所以遍历staffs数组时,countNum只是开发部门的员工数,使用m1.getCountNum获得。

同理,当m2对象调用addCountt方法时,获取的是市场部门的staffs数组,存放的是市场部门的所有员工,也不是所有部门的总人数。遍历staffs数组时,countNum只是市场部门的员工数,使用m2.getCountNum获得。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


吃吃吃鱼的猫 2019-04-26 16:07:08

同学你好,当初始化两个Ministry对象,一个为市场部,一个为开发部。

这时两个对象中的countNum分别代表两个部门的人数,向每个部门中加人时,直接将countNum+1就可以,无需再使用shiNum,kaiNum进行区分。

http://img1.sycdn.imooc.com//climg/5cc2bb8300015d6710300520.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慌_ #1
    如果每次遍历一个员工类,countNum都是会加一,那得到的这个数不是总数么。
    2019-04-26 16:37:04
提问者 慌_ 2019-04-26 14:37:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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