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:10:04 浏览: 156
JAVA 大家可能需要的!
这个问题需要用到JAVA的时间处理类,比如LocalTime和Duration。我来给你示范一下:
```java
import java.time.Duration;
import java.time.LocalTime;
import java.util.ArrayList;
public class Device {
private ArrayList<Duration> freeTimeSegments = new ArrayList<>();
private ArrayList<Duration> workTimeSegments = new ArrayList<>();
public Device(String workTime, String freeTime) {
String[] workTimeArray = workTime.split(";");
String[] freeTimeArray = freeTime.split(";");
for (String segment : workTimeArray) {
String[] times = segment.split("-");
LocalTime start = LocalTime.parse(times[0]);
LocalTime end = LocalTime.parse(times[1]);
workTimeSegments.add(Duration.between(start, end));
}
for (String segment : freeTimeArray) {
String[] times = segment.split("-");
LocalTime start = LocalTime.parse(times[0]);
LocalTime end = LocalTime.parse(times[1]);
freeTimeSegments.add(Duration.between(start, end));
}
}
public boolean hasEnoughTime(Duration duration) {
Duration remainingTime = Duration.ZERO;
for (Duration segment : workTimeSegments) {
if (remainingTime.compareTo(Duration.ZERO) <= 0) {
remainingTime = segment;
} else {
remainingTime = remainingTime.plus(segment);
}
for (Duration freeSegment : freeTimeSegments) {
if (remainingTime.compareTo(duration) >= 0) {
return true;
}
if (freeSegment.compareTo(remainingTime) >= 0) {
remainingTime = remainingTime.plus(freeSegment.minus(remainingTime));
} else {
remainingTime = remainingTime.minus(freeSegment);
}
}
}
return false;
}
public static void main(String[] args) {
Device device = new Device("09:00-10:00;13:00-14:00", "09:58-10:00;13:00-13:03");
Duration duration = Duration.ofMinutes(5);
boolean result = device.hasEnoughTime(duration);
System.out.println(result); // should print "true"
}
}
```
这个示例代码中,我们定义了一个Device类,包含两个ArrayList,一个代表工作时间段,一个代表空闲时间段。在构造函数里,我们将字符串转换成Duration对象,并把它们存在对应的ArrayList里。在hasEnoughTime方法中,我们遍历工作时间段,计算剩余时间(remainingTime),然后遍历空闲时间段,依次减去空闲时间或加上空闲时间,直到剩余时间足够完成工序或者工作时间段遍历完毕。如果最后剩余时间足够完成工序,则返回true,否则返回false。
阅读全文