JAVA 需求如下: 1.有设备的日常工作时间段为字符串(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm) 2.有这个设备工作时间段内还未工作的空闲时间段如字符串(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm) 3.传入某工序需要的工作时间(分) 3.判断这个设备这天的剩余连续工作时段是否满足工序的工作时间需要 返回true或false 需考虑中间非工作时间 比如设备工作时间段是09:00-10:00;13:00-14:00 某工序需要5分钟 此设备这天空闲时间是09:58-10:00 13:00-13:03 则此设备算做满足需要
时间: 2023-08-06 08:09:35 浏览: 173
JAVA 大家可能需要的!
这是一个比较具体的编程问题,需要使用JAVA语言编写代码实现。以下是一个简单的实现方案:
1.将设备的日常工作时间段和空闲时间段分别存储到两个数组中,使用字符串解析方法将字符串转化为数组,例如可以使用String类的split方法;
2.遍历工作时间段数组,对于每个工作时间段,判断是否存在空闲时间段与之匹配,如果存在,则判断该空闲时间段是否足够完成工序需要的工作时间,如果足够,则返回true,否则继续遍历工作时间段数组;
3.如果遍历完所有工作时间段都未找到合适的空闲时间段,则返回false。
以下是一个简单的JAVA代码实现:
```java
public class DeviceScheduler {
private String[] workTime; // 设备工作时间段数组
private String[] freeTime; // 设备空闲时间段数组
public DeviceScheduler(String workTimeStr, String freeTimeStr) {
workTime = workTimeStr.split(";");
freeTime = freeTimeStr.split(";");
}
// 判断设备是否能完成某个工序需要的工作时间
public boolean canComplete(int duration) {
for (String w : workTime) {
String[] wTime = w.split("-");
for (String f : freeTime) {
String[] fTime = f.split("-");
// 判断空闲时间段是否在工作时间段内
if (isInRange(fTime[0], wTime[0], wTime[1]) && isInRange(fTime[1], wTime[0], wTime[1])) {
// 计算空闲时间段的持续时间
int freeDuration = getDuration(fTime[0], fTime[1]);
if (freeDuration >= duration) {
return true;
}
}
}
}
return false;
}
// 判断时间点是否在时间段内
private boolean isInRange(String timeStr, String fromTimeStr, String toTimeStr) {
LocalTime time = LocalTime.parse(timeStr);
LocalTime fromTime = LocalTime.parse(fromTimeStr);
LocalTime toTime = LocalTime.parse(toTimeStr);
return !time.isBefore(fromTime) && !time.isAfter(toTime);
}
// 计算时间段的持续时间(单位:分钟)
private int getDuration(String fromTimeStr, String toTimeStr) {
LocalTime fromTime = LocalTime.parse(fromTimeStr);
LocalTime toTime = LocalTime.parse(toTimeStr);
return (int) ChronoUnit.MINUTES.between(fromTime, toTime);
}
}
```
使用示例:
```java
DeviceScheduler device = new DeviceScheduler("09:00-10:00;13:00-14:00", "09:58-10:00;13:00-13:03");
boolean result = device.canComplete(5);
System.out.println(result); // 输出true
```
注意:上述代码仅为示例,实际应用中还需要考虑更多的异常情况和健壮性问题。
阅读全文