停车场实现不同时间段内不同收费以及时间段外计时
时间: 2023-12-11 22:03:55 浏览: 77
好的,以下是一个 Java 代码示例,实现停车场按不同时间段收取不同费用,并在时间段外按普通计费标准计费的功能。假设停车场收费规则如下:
- 8:00-18:00:每小时收费 10 元;
- 18:00-22:00:每小时收费 15 元;
- 22:00-8:00:每小时收费 8 元;
- 时间段外:停车不足 1 小时,收费 5 元;停车 1 小时以上,每小时收费 4 元。
示例代码如下:
```java
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class ParkingLot {
private LocalDateTime enterTime;
private LocalDateTime exitTime;
public void enter() {
enterTime = LocalDateTime.now();
}
public void exit() {
exitTime = LocalDateTime.now();
}
public int calculateFee() {
int fee = 0;
LocalDateTime tempEnterTime = enterTime;
while (tempEnterTime.isBefore(exitTime)) {
LocalDateTime tempExitTime = tempEnterTime.plusHours(1);
if (tempExitTime.isAfter(exitTime)) {
tempExitTime = exitTime;
}
int hour = tempEnterTime.getHour();
if (hour >= 8 && hour < 18) {
fee += Duration.between(tempEnterTime, tempExitTime).toHours() * 10;
} else if (hour >= 18 && hour < 22) {
fee += Duration.between(tempEnterTime, tempExitTime).toHours() * 15;
} else {
fee += Duration.between(tempEnterTime, tempExitTime).toHours() * 8;
}
tempEnterTime = tempExitTime;
}
if (enterTime.getHour() >= 8 && exitTime.getHour() < 18) {
Duration duration = Duration.between(enterTime, exitTime);
long minutes = duration.toMinutes();
if (minutes < 60) {
fee = 5;
} else {
fee += (int) ((minutes / 60) * 4);
}
}
return fee;
}
}
```
其中,`enter()` 方法表示车辆进入停车场,`exit()` 方法表示车辆离开停车场,`calculateFee()` 方法计算停车费用。在计算停车费用时,使用了一个循环,每次计算进入时间和下一个整点时间之间的停车费用,直到计算出离开时间的停车费用。在计算停车费用时,使用了 `LocalTime` 类来获取小时数,根据不同的时间段设置不同的收费标准。在计算时间段外的停车费用时,使用了普通计费标准,如果停车不足 1 小时,则收费 5 元,停车 1 小时以上,每小时收费 4 元。
阅读全文