JAVA的class创建乘客类实现电梯仿真。最高层数为40,最大载客量为15,仿真开始前电梯位于一层且为空梯,仿真开始,有20位乘客乘电梯上行前往随机楼层
时间: 2024-05-08 08:22:33 浏览: 19
好的,首先需要创建一个Passenger类,用来表示乘客,其中包括乘客的ID、当前所在楼层和目标楼层等属性。具体代码如下:
```java
public class Passenger {
private int id; // 乘客ID
private int currentFloor; // 当前所在楼层
private int destinationFloor; // 目标楼层
public Passenger(int id, int currentFloor, int destinationFloor) {
this.id = id;
this.currentFloor = currentFloor;
this.destinationFloor = destinationFloor;
}
public int getId() {
return id;
}
public int getCurrentFloor() {
return currentFloor;
}
public int getDestinationFloor() {
return destinationFloor;
}
}
```
接下来需要创建一个Elevator类,用来表示电梯,其中包括电梯当前所在楼层、当前载客数量、电梯状态(上行或下行)等属性。具体代码如下:
```java
public class Elevator {
private int currentFloor; // 当前所在楼层
private int capacity; // 最大载客量
private int passengers; // 当前载客数量
private boolean goingUp; // 电梯状态,true表示上行,false表示下行
public Elevator(int capacity) {
this.capacity = capacity;
this.passengers = 0;
this.currentFloor = 1;
this.goingUp = true;
}
public int getCurrentFloor() {
return currentFloor;
}
public int getCapacity() {
return capacity;
}
public int getPassengers() {
return passengers;
}
public boolean isGoingUp() {
return goingUp;
}
public void moveUp() {
currentFloor++;
}
public void moveDown() {
currentFloor--;
}
public void boardPassenger() {
passengers++;
}
public void disembarkPassenger() {
passengers--;
}
public boolean isFull() {
return passengers == capacity;
}
}
```
接下来需要创建一个主程序,用来模拟电梯的行为。具体代码如下:
```java
import java.util.*;
public class ElevatorSimulation {
public static void main(String[] args) {
// 创建电梯和乘客列表
Elevator elevator = new Elevator(15);
List<Passenger> passengers = new ArrayList<>();
// 创建20个乘客
for (int i = 1; i <= 20; i++) {
int currentFloor = 1; // 所在楼层初始化为1
int destinationFloor = (int) (Math.random() * 40) + 1; // 目标楼层随机生成
passengers.add(new Passenger(i, currentFloor, destinationFloor));
}
// 开始模拟电梯运行
while (true) {
// 判断电梯是否到达目标楼层
if (elevator.getCurrentFloor() == passengers.get(0).getCurrentFloor()) {
// 乘客上电梯
while (!elevator.isFull() && !passengers.isEmpty() && passengers.get(0).getCurrentFloor() == elevator.getCurrentFloor()) {
elevator.boardPassenger();
passengers.remove(0);
}
// 电梯开始运行
if (passengers.isEmpty()) {
break; // 所有乘客已经到达目的地,模拟结束
} else {
// 电梯改变运行状态
if (elevator.getCurrentFloor() == 1) {
elevator.moveUp(); // 电梯在一楼,改为上行状态
elevator.goingUp = true;
} else if (elevator.getCurrentFloor() == 40) {
elevator.moveDown(); // 电梯在四十楼,改为下行状态
elevator.goingUp = false;
} else if (elevator.isGoingUp()) {
elevator.moveUp(); // 电梯在中间楼层,继续上行
} else {
elevator.moveDown(); // 电梯在中间楼层,继续下行
}
}
} else {
// 电梯继续运行
if (elevator.getCurrentFloor() == 1) {
elevator.moveUp(); // 电梯在一楼,改为上行状态
elevator.goingUp = true;
} else if (elevator.getCurrentFloor() == 40) {
elevator.moveDown(); // 电梯在四十楼,改为下行状态
elevator.goingUp = false;
} else if (elevator.isGoingUp()) {
elevator.moveUp(); // 电梯在中间楼层,继续上行
} else {
elevator.moveDown(); // 电梯在中间楼层,继续下行
}
}
// 乘客到达目的地,从电梯中下来
for (int i = 0; i < elevator.getPassengers(); i++) {
if (elevator.isGoingUp()) {
if (elevator.getCurrentFloor() == elevator.getPassengers().get(i).getDestinationFloor()) {
elevator.disembarkPassenger();
}
} else {
if (elevator.getCurrentFloor() == elevator.getPassengers().get(i).getDestinationFloor()) {
elevator.disembarkPassenger();
}
}
}
}
// 输出模拟结束后电梯的状态
System.out.println("Simulation finished.");
System.out.println("Elevator stopped at floor " + elevator.getCurrentFloor() + ".");
System.out.println("Number of passengers left in elevator: " + elevator.getPassengers());
}
}
```
这样就完成了一个简单的电梯仿真程序。在程序中,我们创建了一个Elevator类和一个Passenger类,分别用来表示电梯和乘客。然后在主程序中,我们先创建了20个乘客,每个乘客的目的地是随机生成的。然后我们开始模拟电梯的运行,直到所有乘客都到达目的地为止。在模拟过程中,我们需要判断乘客是否需要上电梯,是否需要下电梯,以及电梯的运行状态等。最后输出模拟结束后电梯的状态。