学校PTA题目要交了,一点头绪没有,问了几个ai也写不出来,网上也找不到相似的题目,跪求大佬帮帮。
设计一个电梯类,具体包含电梯的最大楼层数、最小楼层数(默认为1层)当前楼层、运行方向、运行状态,以及电梯内部乘客的请求队列和电梯外部楼层乘客的请求队列,其中,电梯外部请求队列需要区分上行和下行。电梯运行规则如下:电梯默认停留在1层,状态为静止,当有乘客对电梯发起请求时(各楼层电梯外部乘客按下上行或者下行按钮或者电梯内部乘客按下想要到达的楼层数字按钮),电梯开始移动,当电梯向某个方向移动时,优先处理同方向的请求,当同方向的请求均被处理完毕然后再处理相反方向的请求。电梯运行过程中的状态包括停止、移动中、开门、关门等状态。当电梯停止时,如果有新的请求,就根据请求的方向或位置决定移动方向。电梯在运行到某一楼层时,检查当前是否有请求(访问电梯内请求队列和电梯外请求队列),然后据此决定移动方向。每次移动一个楼层,检查是否有需要停靠的请求,如果有,则开门,处理该楼层的请求,然后关门继续移动。使用键盘模拟输入乘客的请求,此时要注意处理无效请求情况,例如无效楼层请求,比如超过大楼的最高或最低楼层。还需要考虑电梯的空闲状态,当没有请求时,电梯停留在当前楼层。请编写一个Java程序,设计一个电梯类,包含状态管理、请求队列管理以及调度算法,并使用一些测试用例,模拟不同的请求顺序,观察电梯的行为是否符合预期,比如是否优先处理同方向的请求,是否在移动过程中处理顺路的请求等。为了降低编程难度,不考虑同时有多个乘客请求同时发生的情况,即采用串行处理乘客的请求方式(电梯只按照规则响应请求队列中当前的乘客请求,响应结束后再响应下一个请求),具体运行规则详见输入输出样例。
输入格式:第一行输入最小电梯楼层数。第二行输入最大电梯楼层数。从第三行开始每行输入代表一个乘客请求。
电梯内乘客请求格式:<楼层数>电梯外乘客请求格式:<乘客所在楼层数,乘梯方向>,其中,乘梯方向用UP代表上行,用DOWN代表下行(UP、DOWN必须大写)。当输入“end”时代表输入结束(end不区分大小写)。输出格式:模拟电梯的运行过程,输出方式如下:
运行到某一楼层(不需要停留开门),输出一行文本:Current Floor: 楼层数 Direction: 方向运行到某一楼层(需要停留开门)输出两行文本:Open Door # Floor 楼层数Close Door输入样例:在这里给出一组输入。例如:
120<3,UP><5><6,DOWN><7><3>end输出样例:在这里给出相应的输出。例如:
Current Floor: 1 Direction: UPCurrent Floor: 2 Direction: UPCurrent Floor: 3 Direction: UPOpen Door # Floor 3Close DoorCurrent Floor: 4 Direction: UPCurrent Floor: 5 Direction: UPOpen Door # Floor 5Close DoorCurrent Floor: 6 Direction: UPCurrent Floor: 7 Direction: UPOpen Door # Floor 7Close DoorCurrent Floor: 6 Direction: DOWNOpen Door # Floor 6Close DoorCurrent Floor: 5 Direction: DOWNCurrent Floor: 4 Direction: DOWNCurrent Floor: 3 Direction: DOWNOpen Door # Floor 3Close Door

设计一个电梯类,具体包含电梯的最大楼层数、最小楼层数(默认为1层)当前楼层、运行方向、运行状态,以及电梯内部乘客的请求队列和电梯外部楼层乘客的请求队列,其中,电梯外部请求队列需要区分上行和下行。电梯运行规则如下:电梯默认停留在1层,状态为静止,当有乘客对电梯发起请求时(各楼层电梯外部乘客按下上行或者下行按钮或者电梯内部乘客按下想要到达的楼层数字按钮),电梯开始移动,当电梯向某个方向移动时,优先处理同方向的请求,当同方向的请求均被处理完毕然后再处理相反方向的请求。电梯运行过程中的状态包括停止、移动中、开门、关门等状态。当电梯停止时,如果有新的请求,就根据请求的方向或位置决定移动方向。电梯在运行到某一楼层时,检查当前是否有请求(访问电梯内请求队列和电梯外请求队列),然后据此决定移动方向。每次移动一个楼层,检查是否有需要停靠的请求,如果有,则开门,处理该楼层的请求,然后关门继续移动。使用键盘模拟输入乘客的请求,此时要注意处理无效请求情况,例如无效楼层请求,比如超过大楼的最高或最低楼层。还需要考虑电梯的空闲状态,当没有请求时,电梯停留在当前楼层。请编写一个Java程序,设计一个电梯类,包含状态管理、请求队列管理以及调度算法,并使用一些测试用例,模拟不同的请求顺序,观察电梯的行为是否符合预期,比如是否优先处理同方向的请求,是否在移动过程中处理顺路的请求等。为了降低编程难度,不考虑同时有多个乘客请求同时发生的情况,即采用串行处理乘客的请求方式(电梯只按照规则响应请求队列中当前的乘客请求,响应结束后再响应下一个请求),具体运行规则详见输入输出样例。
输入格式:第一行输入最小电梯楼层数。第二行输入最大电梯楼层数。从第三行开始每行输入代表一个乘客请求。
电梯内乘客请求格式:<楼层数>电梯外乘客请求格式:<乘客所在楼层数,乘梯方向>,其中,乘梯方向用UP代表上行,用DOWN代表下行(UP、DOWN必须大写)。当输入“end”时代表输入结束(end不区分大小写)。输出格式:模拟电梯的运行过程,输出方式如下:
运行到某一楼层(不需要停留开门),输出一行文本:Current Floor: 楼层数 Direction: 方向运行到某一楼层(需要停留开门)输出两行文本:Open Door # Floor 楼层数Close Door输入样例:在这里给出一组输入。例如:
120<3,UP><5><6,DOWN><7><3>end输出样例:在这里给出相应的输出。例如:
Current Floor: 1 Direction: UPCurrent Floor: 2 Direction: UPCurrent Floor: 3 Direction: UPOpen Door # Floor 3Close DoorCurrent Floor: 4 Direction: UPCurrent Floor: 5 Direction: UPOpen Door # Floor 5Close DoorCurrent Floor: 6 Direction: UPCurrent Floor: 7 Direction: UPOpen Door # Floor 7Close DoorCurrent Floor: 6 Direction: DOWNOpen Door # Floor 6Close DoorCurrent Floor: 5 Direction: DOWNCurrent Floor: 4 Direction: DOWNCurrent Floor: 3 Direction: DOWNOpen Door # Floor 3Close Door
