javascript代码实现模拟电梯
时间: 2023-09-28 18:04:20 浏览: 111
好的,我可以回答这个问题。以下是一个简单的 JavaScript 代码模拟电梯的实现:
```
class Elevator {
constructor(numFloors) {
this.floor = 0;
this.numFloors = numFloors;
this.direction = 'up';
this.stops = [];
this.currentStop = null;
this.running = false;
}
request(floor) {
if (floor > this.numFloors) {
console.log('Error: Requested floor is above the top floor of the building.');
return;
} else if (floor < 1) {
console.log('Error: Requested floor is below the bottom floor of the building.');
return;
}
this.stops.push(floor);
if (!this.running) {
this.run();
}
}
run() {
this.running = true;
while (this.stops.length > 0) {
this.currentStop = this.nextStop();
if (this.currentStop > this.floor) {
this.direction = 'up';
} else if (this.currentStop < this.floor) {
this.direction = 'down';
}
console.log(`Floor ${this.floor}`);
while (this.floor !== this.currentStop) {
this.floor = this.direction === 'up' ? this.floor + 1 : this.floor - 1;
console.log(`Floor ${this.floor}`);
}
console.log(`Stopping at floor ${this.floor}`);
this.stops.splice(this.stops.indexOf(this.currentStop), 1);
}
this.running = false;
}
nextStop() {
let nextFloor = this.floor;
if (this.direction === 'up') {
for (let i = 0; i < this.stops.length; i++) {
if (this.stops[i] >= this.floor && this.stops[i] < nextFloor) {
nextFloor = this.stops[i];
}
}
} else if (this.direction === 'down') {
for (let i = 0; i < this.stops.length; i++) {
if (this.stops[i] <= this.floor && this.stops[i] > nextFloor) {
nextFloor = this.stops[i];
}
}
}
return nextFloor;
}
}
const elevator = new Elevator(10);
elevator.request(3);
elevator.request(7);
elevator.request(2);
```
这个代码实现了一个 Elevator 类,该类具有请求电梯并移动到所需楼层的能力。该代码以 1 作为底层楼层。要测试代码,您可以将代码粘贴到浏览器的控制台中,然后调用 `elevator.request()` 方法以请求所需的楼层。