java实现四班三运转,全年每天必有人在,没个班按工作四天休一天再工作两天休一天规律进行排班,具体代码示例
时间: 2024-09-26 21:17:15 浏览: 8
在Java中实现“四班三运转”的排班模式,可以创建一个班次类(Batch)来代表每个轮班,并维护一个循环的日期列表(Cycle)来跟踪轮班顺序。这里提供一个简单的类设计和核心代码示例:
```java
import java.util.ArrayList;
import java.util.List;
class Batch {
private int id;
private boolean isWorkingDay; // 0表示休息日,1表示工作日
public Batch(int id, int dayOfWeek) {
this.id = id;
if (dayOfWeek == 1 || dayOfWeek == 4) { // 工作日对应0和3(星期一到星期四)
isWorkingDay = true;
} else {
isWorkingDay = false;
}
}
public boolean isWorking() {
return isWorkingDay;
}
}
class ShiftScheduler {
private List<Batch> batches;
private int currentCycleIndex = 0;
public ShiftScheduler() {
batches = new ArrayList<>();
for (int i = 1; i <= 4; i++) { // 四个班
batches.add(new Batch(i, i % 4 + 1)); // 1-4 表示星期一到星期四
}
}
public Batch getNextShift() {
if (currentCycleIndex >= batches.size()) {
currentCycleIndex = 0;
}
Batch batch = batches.get(currentCycleIndex);
currentCycleIndex++;
return batch;
}
}
public class Main {
public static void main(String[] args) {
ShiftScheduler scheduler = new ShiftScheduler();
for (int day = 1; ; day++) {
Batch nextShift = scheduler.getNextShift();
System.out.printf("Day %d: Batch %s is working? %b%n", day, nextShift.id, nextShift.isWorking());
// 根据实际需求替换打印操作,比如存入数据库或显示给用户
}
}
}
```
在这个例子中,`ShiftScheduler`负责管理四个班次的轮换。`getNextShift()`方法会返回当前应该工作的班次。主函数`main`会按照四天工作、一天休息、两天工作、一天休息的模式循环打印出每一天的班次。