public class ElevatorModel implenent ElevatorModelListener{
ElevatorShaft elevatorShaft//电梯车箱
Floor firstFloor
Floor secondFloor
public void addPerson(Person person)
//实现ElevatorModelListener接口的所有方法
}
public abstract class Location{
String locationName//可能占据的三个位置firstFloorsecondFloorelevator中的其中一个位置。
public Button getButton()
public Door getDoor()
}
public class Floor extends Location{
public Floor(String firstFloor,String secondFloor)
public Button getButton()//具体实现
public Door getDoor()//具体实现
public ElevatorShaft getElevatorShaft()
}
public class Door implenent ElevatorMoveListener{
boolean open//门是开的关的
public void openDoor()//开门
public viod clossDoor()//关门
}
public class Button implenent ElevatorMoveListener{
boolean pressed
public void pressButton()//按下按钮
public void resetButton()//释放按钮
public void elevatorArrived()//电梯到来
}
public class ElevatorShaft{//电梯乘箱
Elevator elevator//电梯
Button firstFloorButton,secondFloorButton//出发层的按钮和到达层的按钮 Door firstFloorDoor,secondFloorDoor//出发的门和到达的门
Light firstFloorLight,secondFloorLight//灯
//监听器
DoorListener doorListener
ButtonListener buttonListener
LightListener ligthListener
BellListener bellListener
ElevatorMoveListener elevatorMoveListener
Set set
}
public class Light implenent ElevatorMoveListener{
boolean lightOn//代表灯的状态,亮或灭
public void turnOnLight()
public void turnOffLight()
public void elevatorDeparted()//具体实现
public void elevatorArrived()//具体实现
}
public class Bell implenent ElevatorMoveListener{
public void ringBell()
public void elevatorDeparted()//具体实现
public void elevatorArrived()//具体实现
}
public class Elevator extends Location implenets
ButtonListener,DoorListener,BellListener,Runable
{//电梯乘箱
boolean moving
boolean summoned//描述Elevator是在移动还是已经补召唤
Floor currentFloor//当前正在提供服务的Floor
Floor destinationFloor //代表将要到达的Floor
Button elevatorButton
Door elevatorDoor
Bell bell
public void run()// 实现
public void requestElevator()//请求Elevator并产生排队请求。 }
public class Person extends Thread{
Location类对象(或是位于Floor上,或是出处在Elevator中)int ID
boolean moving
public void run()//具体实现
public void enterAndRideElevator()
}
这是我回答前几天和你一样想要的电梯程序 是单箱的 希望能帮助你 package beanpublic class dianti { int on=1//定义一个初始化楼层 初始化是在1层 //先从简单的开始 我们先写两个方法 一个是在电梯外面方法 一个是在电梯内部的方法 public void wai(int num)//外部方法 { if(num==this.on) { System.out.println("停留在本层 直接开门")} else if(num>this.on) { Thread th = new Thread()for(int i=this.oni<=numi++) { if(i==num) { System.out.println("电梯到达~开门请进···")this.on=num} else { System.out.println("电梯在"+i+"层 马上就到,请等待····")try { th.sleep(1000)} catch (InterruptedException e) { e.printStackTrace()} } } } else if(num>0&&num<this.on) { System.out.println("进来了" +num+" "+this.on)Thread th1 = new Thread()for(int u=this.onu>=numu--) { if(u==num) { System.out.println("电梯到达~开门请进···")this.on=num} else { System.out.println("电梯在"+u+"层 马上就到,请等待····")try { th1.sleep(1000)} catch (InterruptedException e) { e.printStackTrace()} } } } else { System.out.println("1111111111111")} } //内部方法 public void nei(int num) { System.out.println("进来了~当前楼层是"+this.on+" 我们的目标是"+num+"层")if(num==this.on) { System.out.println("您就在本层 开门")} else if(num>0&&num<11&&num<this.on) { for(int y=this.ony>=numy--) { Thread th1 = new Thread()if(y==num) { System.out.println("电梯到达~欢迎下次在做···")this.on=num} else { System.out.println("电梯在"+y+"层 马上就到,请等待····")try { th1.sleep(1000)} catch (InterruptedException e) { e.printStackTrace()} } } } else if(num>0&&num<11&&num>this.on) { for(int y=this.ony<=numy++) { Thread th1 = new Thread()if(y==num) { System.out.println("电梯到达~欢迎下次在做····")this.on=num} else { System.out.println("电梯在"+y+"层 马上就到,请等待····")try { th1.sleep(1000)} catch (InterruptedException e) { e.printStackTrace()} } } } } public static void main(String[] args) { dianti d = new dianti()//模拟开始 初始化是1层 首先我们去10层 d.wai(1)//传进去的1表示我们是在1层按电梯准备上 d.nei(10)//表示电梯到了 我们选择了10层开始上升 现在电梯停留在10层 d.wai(5)//在电梯还在10层停留的时候 5层有人使用 d.nei(1)//目标是一层 //这个其实不完整 还需要加上很多判断的 必然经过每层的时候判断是否有顺路下的 //还有就是电梯在上升的时候经过了2层到了3层 此时2层有人按 又该如何 自己试着去想一想解决方法 } }欢迎分享,转载请注明来源:内存溢出
评论列表(0条)