老师你们 请问这当中的 给部门分类并计算次数的代码有什么优化方案 我这个虽然可以做到但是感觉过于简陋
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | package com.imooc.office; public class Section { //部门编号、部门名称、员工数组、员工人数 private String sectionNo; private String sectionName; private Staff[] sectionNum; //用于存放信息的数组 private int StaffNum; //用于统计人事部员工人数 private int StaffNum2; //用于统计市场部员工人员 int a,b; //用于辅助计算人事部和市场部的人数 //无参构造方法 public Section() { } //带参构造方法,实现对部门的初始化 public Section(String sectionNo, String sectionName) { this .setSectionName(sectionName); this .setSectionNo(sectionNo); } public String getSectionNo() { return sectionNo; } public void setSectionNo(String sectionNo) { this .sectionNo = sectionNo; } public String getSectionName() { return sectionName; } public void setSectionName(String sectionName) { this .sectionName = sectionName; } // 当数组没赋值时给数组赋初值 public Staff[] getSectionNum() { if ( this .sectionNum == null ) { this .sectionNum = new Staff[ 200 ]; } return sectionNum; } public int getStaffNum() { return StaffNum; } public void setStaffNum( int staffNum) { StaffNum = staffNum; } public void setSectionNum(Staff[] sectionNum) { this .sectionNum = sectionNum; } public int getStaffNum2() { return StaffNum2; } public void setStaffNum2( int staffNum2) { StaffNum2 = staffNum2; } /** * 给各部添加成员 * @param check */ public void add(Staff check) { //1 根据部门给员工分组 //2 计算部门员工人数。 for ( int i= 0 ;i< this .getSectionNum().length;i++) { if ( this .getSectionNum()[i]== null ) { this .getSectionNum()[i]=check; // this.setStaffNum(i+1); break ; } } if (check.getSection().getSectionName().equals( "人事部" )) { //a++; this .setStaffNum(++a); } if (check.getSection().getSectionName().equals( "市场部" )){ //b++; this .setStaffNum2(++b); } } } |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | package com.imooc.office; public class Staff { // 姓名、性别、年龄、工号、所在部门、职务 private String name; private String set; private int age; private String workNo; private Section section; private Position position; // 无参构造方法 public Staff() { } // 带参构造方法,实现对姓名、性别、年龄、工号、部门、职务的赋值 public Staff(String name, String workNo, String set, int age,Section section,Position position) { this .setAge(age); this .setName(name); this .setSet(set); this .setWorkNo(workNo); this .setSection(section); this .setPosition(position); } public String getWorkNo() { return workNo; } public void setWorkNo(String workNo) { this .workNo = workNo; } public String getName() { return name; } public void setName(String name) { this .name = name; } public String getSet() { return set; } //加入性别不是男女当中一个 就判定默认为男 public void setSet(String set) { if ( "男" .equals(set)| "女" .equals(set)) { this .set = set; } else { this .set= "男" ; } } public int getAge() { return age; } //当年龄小于18或者大于65时 默认为18 public void setAge( int age) { if (age< 18 |age> 65 ) { this .age= 18 ; } else this .age = age; } public Section getSection() { return section; } public void setSection(Section section) { this .section = section; } public Position getPosition() { return position; } public void setPosition(Position position) { this .position = position; } /** * 用于返回姓名、性别、年龄、工号、职务、部门 * @return 返回要输出的值 */ public String ouPut() { String str; str = "姓名:" + this .getName() + "\n工号:" + this .getWorkNo() + "\n性别:" + this .getSet() + "\n年龄:" + this .getAge() + "\n职务:" + this .getSection().getSectionName() + this .getPosition().getPositionName() + "\n=====================================================" ; return str; } } |
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 | package com.imooc.office; public class Position { //职务编号、职务名称 private String positionNo; private String positionName; //无参构造方法 public Position() { } //带参构造方法,实现对职务的初始化 public Position(String positionNo, String positionName) { this .setPositionName(positionName); this .setPositionNo(positionNo); } public String getPositionNo() { return positionNo; } public void setPositionNo(String positionNo) { this .positionNo = positionNo; } public String getPositionName() { return positionName; } public void setPositionName(String positionName) { this .positionName = positionName; } } |
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 | package com.imooc.text; import com.imooc.office.*; public class Text { public static void main(String[] args) { //初始化部门 Section bm1= new Section( "D001" , "人事部" ); Section bm2= new Section( "D002" , "市场部" ); //初始化职务 Position zw1= new Position( "P001" , "经理" ); Position zw2= new Position( "P002" , "助理" ); Position zw3= new Position( "P003" , "职员" ); //输入员工信息 Staff a1= new Staff( "张铭" , "S001" , "男" , 29 ,bm1,zw1); Staff a2= new Staff( "李艾爱" , "S002" , "女" , 21 ,bm1,zw2); Staff a3= new Staff( "孙超" , "S003" , "男" , 29 ,bm1,zw3); Staff a4= new Staff( "张美美" , "S004" , "女" , 26 ,bm2,zw3); Staff a5= new Staff( "蓝迪" , "S005" , "男" , 37 ,bm2,zw1); Staff a6= new Staff( "米莉" , "S006" , "女" , 24 ,bm2,zw3); //将员工信息传入数组 Section se= new Section(); se.add(a1); se.add(a2); se.add(a3); se.add(a4); se.add(a5); se.add(a6); //输出员工信息并给部门分组 System.out.println(a1.ouPut()); System.out.println(a2.ouPut()); System.out.println(a3.ouPut()); System.out.println(a4.ouPut()); System.out.println(a5.ouPut()); System.out.println(a6.ouPut()); System.out.println( "人事部总共有" +se.getStaffNum()+ "名员工" ); System.out.println( "市场部总共有" +se.getStaffNum2()+ "名员工" ); } } |
19
收起
正在回答
2回答
同学你好,添加员工的方法优化代码思路如下:
写一个添加员工的方法,参数是员工类,方法内写一个for循环,for循环中的条件是int i = 0 ; i < this.getSectionNum().length ; i ++,循环内写一个if语句,判断如果 this.getSectionNum()[i]为null,把传递过来的员工对象赋值给this.getSectionNum()[i]。并且把员工数加一,return。此过程是把员工添加到数组中,并且统计对应员工个数。具体修改的代码如下:
Section类:
Section类:
Test类将代码粘贴给同学,修改之处把同学的代码进行了注释,同学注意区分:
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 | public class Text { public static void main(String[] args) { //初始化部门 Section bm1= new Section( "D001" , "人事部" ); Section bm2= new Section( "D002" , "市场部" ); //初始化职务 Position zw1= new Position( "P001" , "经理" ); Position zw2= new Position( "P002" , "助理" ); Position zw3= new Position( "P003" , "职员" ); //输入员工信息 Staff a1= new Staff( "张铭" , "S001" , "男" , 29 ,bm1,zw1); Staff a2= new Staff( "李艾爱" , "S002" , "女" , 21 ,bm1,zw2); Staff a3= new Staff( "孙超" , "S003" , "男" , 29 ,bm1,zw3); Staff a4= new Staff( "张美美" , "S004" , "女" , 26 ,bm1,zw3); Staff a5= new Staff( "蓝迪" , "S005" , "男" , 37 ,bm2,zw1); Staff a6= new Staff( "米莉" , "S006" , "女" , 24 ,bm2,zw3); //将员工信息传入数组 /*Section se=new Section(); se.addStaff(a1); se.addStaff(a2); se.addStaff(a3); se.addStaff(a4); se.addStaff(a5); se.addStaff(a6);*/ bm1.addStaff(a1); bm1.addStaff(a2); bm1.addStaff(a3); bm2.addStaff(a4); bm2.addStaff(a5); bm2.addStaff(a6); //输出员工信息并给部门分组 System.out.println(a1.ouPut()); System.out.println(a2.ouPut()); System.out.println(a3.ouPut()); System.out.println(a4.ouPut()); System.out.println(a5.ouPut()); System.out.println(a6.ouPut()); /*System.out.println("人事部总共有"+se.getStaffNum()+"名员工"); System.out.println("市场部总共有"+se.getStaffNum2()+"名员工");*/ System.out.println( "人事部总共有" +bm1.getStaffNum()+ "名员工" ); System.out.println( "市场部总共有" +bm2.getStaffNum()+ "名员工" ); } } |
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
好帮手慕小琪
2020-04-27 20:48:50
同学你好,老师用的类分别是:同学更改后的Section类,之前粘贴的Position类和Staff类,和老师改过的Test类。老师运行是没有问题的,老师将全部代码粘贴给同学,同学注意区分一下:
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | //Section类 public class Section { //部门编号、部门名称、员工数组、员工人数 private String sectionNo; private String sectionName; private Staff[] sectionNum; //用于存放信息的数组 private int StaffNum; //用于统计人事部员工人数 //无参构造方法 public Section() { } //带参构造方法,实现对部门的初始化 public Section(String sectionNo, String sectionName) { this .setSectionName(sectionName); this .setSectionNo(sectionNo); } public String getSectionNo() { return sectionNo; } public void setSectionNo(String sectionNo) { this .sectionNo = sectionNo; } public String getSectionName() { return sectionName; } public void setSectionName(String sectionName) { this .sectionName = sectionName; } // 当数组没赋值时给数组赋初值 public Staff[] getSectionNum() { if ( this .sectionNum == null ) { this .sectionNum = new Staff[ 200 ]; } return sectionNum; } public void setSectionNum(Staff[] sectionNum) { this .sectionNum = sectionNum; } public int getStaffNum() { return StaffNum; } public void setStaffNum( int staffNum) { StaffNum = staffNum; } /** * 给各部添加成员 * * @param check */ public void add(Staff check) { //1 根据部门给员工分组 //2 计算部门员工人数。 Staff[] staff = this .getSectionNum(); for ( int i = 0 ; i < staff.length; i++) { if (staff[i] == null ) { check.setSection( this ); //将新成员放入部门中的员工数组 staff[i] = check; //统计部门员工个数 this .StaffNum = i + 1 ; 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 | //Position类 public class Position { //职务编号、职务名称 private String positionNo; private String positionName; //无参构造方法 public Position() { } //带参构造方法,实现对职务的初始化 public Position(String positionNo, String positionName) { this .setPositionName(positionName); this .setPositionNo(positionNo); } public String getPositionNo() { return positionNo; } public void setPositionNo(String positionNo) { this .positionNo = positionNo; } public String getPositionName() { return positionName; } public void setPositionName(String positionName) { this .positionName = positionName; } } |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | //Staff类 public class Staff { // 姓名、性别、年龄、工号、所在部门、职务 private String name; private String set; private int age; private String workNo; private Section section; private Position position; // 无参构造方法 public Staff() { } // 带参构造方法,实现对姓名、性别、年龄、工号、部门、职务的赋值 public Staff(String name, String workNo, String set, int age,Section section,Position position) { this .setAge(age); this .setName(name); this .setSet(set); this .setWorkNo(workNo); this .setSection(section); this .setPosition(position); } public String getWorkNo() { return workNo; } public void setWorkNo(String workNo) { this .workNo = workNo; } public String getName() { return name; } public void setName(String name) { this .name = name; } public String getSet() { return set; } //加入性别不是男女当中一个 就判定默认为男 public void setSet(String set) { if ( "男" .equals(set)| "女" .equals(set)) { this .set = set; } else { this .set= "男" ; } } public int getAge() { return age; } //当年龄小于18或者大于65时 默认为18 public void setAge( int age) { if (age< 18 |age> 65 ) { this .age= 18 ; } else this .age = age; } public Section getSection() { return section; } public void setSection(Section section) { this .section = section; } public Position getPosition() { return position; } public void setPosition(Position position) { this .position = position; } /** * 用于返回姓名、性别、年龄、工号、职务、部门 * @return 返回要输出的值 */ public String ouPut() { String str; str = "姓名:" + this .getName() + "\n工号:" + this .getWorkNo() + "\n性别:" + this .getSet() + "\n年龄:" + this .getAge() + "\n职务:" + this .getSection().getSectionName() + this .getPosition().getPositionName() + "\n=====================================================" ; return str; } } |
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 | //Text类 public class Text { public static void main(String[] args) { //初始化部门 Section bm1= new Section( "D001" , "人事部" ); Section bm2= new Section( "D002" , "市场部" ); //初始化职务 Position zw1= new Position( "P001" , "经理" ); Position zw2= new Position( "P002" , "助理" ); Position zw3= new Position( "P003" , "职员" ); //输入员工信息 Staff a1= new Staff( "张铭" , "S001" , "男" , 29 ,bm1,zw1); Staff a2= new Staff( "李艾爱" , "S002" , "女" , 21 ,bm1,zw2); Staff a3= new Staff( "孙超" , "S003" , "男" , 29 ,bm1,zw3); Staff a4= new Staff( "张美美" , "S004" , "女" , 26 ,bm1,zw3); Staff a5= new Staff( "蓝迪" , "S005" , "男" , 37 ,bm2,zw1); Staff a6= new Staff( "米莉" , "S006" , "女" , 24 ,bm2,zw3); //将员工信息传入数组 /*Section se=new Section(); se.addStaff(a1); se.addStaff(a2); se.addStaff(a3); se.addStaff(a4); se.addStaff(a5); se.addStaff(a6);*/ bm1.add(a1); bm1.add(a2); bm1.add(a3); bm1.add(a4); bm2.add(a5); bm2.add(a6); //输出员工信息并给部门分组 System.out.println(a1.ouPut()); System.out.println(a2.ouPut()); System.out.println(a3.ouPut()); System.out.println(a4.ouPut()); System.out.println(a5.ouPut()); System.out.println(a6.ouPut()); /*System.out.println("人事部总共有"+se.getStaffNum()+"名员工"); System.out.println("市场部总共有"+se.getStaffNum2()+"名员工");*/ System.out.println( "人事部总共有" +bm1.getStaffNum()+ "名员工" ); System.out.println( "市场部总共有" +bm2.getStaffNum()+ "名员工" ); } } |
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧