)假定所有雇员每周 工作的小时数存储在一个二维数组中。每行将一个雇 员7天的工作时间记录在7列中。例如:右面显示的 数组存储了8个雇员的工作时间。编写一个程序,按 照总工时降序的方式显示雇员和他们的总工时。用面向对象编程思想实现。
时间: 2024-10-12 09:05:44 浏览: 46
为了按照总工时降序显示雇员及其总工时,我们可以使用面向对象编程(OOP)的设计思路,创建一个员工类`Employee`,包含姓名属性以及计算总工时的方法。然后,我们可以创建一个二维数组`EmployeesData`来存储每个雇员一周的工作时间,并维护一个`EmployeeList`来保存所有雇员对象,按照总工时排序。
首先,我们定义`Employee`类:
```java
public class Employee {
private String name;
private int[][] weeklyHours;
public Employee(String name, int[][] weeklyHours) {
this.name = name;
this.weeklyHours = weeklyHours;
}
// 计算总工时的方法
public int getTotalWorkingHours() {
int total = 0;
for (int[] dayHours : weeklyHours) {
total += Arrays.stream(dayHours).sum();
}
return total;
}
@Override
public String toString() {
return "Employee [name=" + name + ", total hours=" + getTotalWorkingHours() + "]";
}
}
```
接着,我们处理主程序部分:
```java
import java.util.*;
class Main {
public static void main(String[] args) {
// 假设这是员工数据
int[][] employessData = { /* 这里填充8个雇员一周的工时数据 */ };
List<Employee> employeeList = new ArrayList<>();
// 创建并添加员工到列表
for (int i = 0; i < employessData.length; i++) {
Employee employee = new Employee("Employee " + (i+1), employessData[i]);
employeeList.add(employee);
}
// 使用Collections.sort对员工列表按总工时降序排序
Collections.sort(employeeList, Comparator.comparingInt(Employee::getTotalWorkingHours).reversed());
// 打印结果
for (Employee employee : employeeList) {
System.out.println(employee);
}
//
阅读全文