📄 elevator.java
字号:
//package wuxf;
public class Elevator {
final static int STOP = 0;
final static int UP = 1;
final static int DOWN = 2;
final static int MAXPERSONS = 10;
public int status = STOP;
public int currentFloor = -1;
Person[] personsInElevator;
public Elevator() {
currentFloor = 1;
personsInElevator = new Person[10];
for (int i = 0; i < MAXPERSONS; i++) {
personsInElevator[i] = new Person( -1, -1, -1,0);
} }
public void changeCurrentFloor(){
if(status==UP) currentFloor+=1;
if(status==DOWN) currentFloor-=1;
}
public boolean kickPersons( Main ta){
boolean kicked=false;
for(int i=0;i<10;i++){
if(personsInElevator[i].status==1){
if(personsInElevator[i].to==currentFloor){
personsInElevator[i].status=-1;
kicked=true;
ta.textArea1.append("person "+personsInElevator[i].num+" go out on floor "+currentFloor+"\n");
}}}
return kicked; }
public boolean liftIsEmpty(){
int flag=0;
for(int i=0;i<10;i++){
if(personsInElevator[i].status==1){
flag=1;break;} }
if (flag==1) return false;
return true;}
public int numInElevator(){
int num=0;
for(int i=0;i<10;i++){
if(personsInElevator[i].status==1){
num++; }}
return num;}
public boolean addPersons(AllFloors allfloors ){
boolean added=false;
int directionFlag=3;
for(int i=0;i<10;i++){
if((allfloors.allFloors[currentFloor-1].personsOnThisFloor[i].status==0)&&//该层有人在等
(((this.liftIsEmpty()==true)&&(this.status==UP||this.status==STOP)&&(!allfloors.someoneIsAbove(currentFloor)))||
((this.liftIsEmpty()==true)&&(this.status==DOWN||this.status==STOP)&&(!allfloors.someoneIsBelow(currentFloor))||
((this.liftIsEmpty()==false)&&((allfloors.allFloors[currentFloor-1].personsOnThisFloor[i].direction()==this.status)))//楼层里有人且等的人和电梯同向
))){
for(int j=0;j<10;j++){
if (personsInElevator[j].status == -1){
personsInElevator[j].from=allfloors.allFloors[currentFloor-1].personsOnThisFloor[i].from;
personsInElevator[j].to =allfloors.allFloors[currentFloor-1].personsOnThisFloor[i].to;
personsInElevator[j].status=1;
personsInElevator[j].num=allfloors.allFloors[currentFloor-1].personsOnThisFloor[i].num;
if(directionFlag>allfloors.allFloors[currentFloor-1].personsOnThisFloor[i].direction())
directionFlag=allfloors.allFloors[currentFloor-1].personsOnThisFloor[i].direction();
added=true;
break; }
}
if(directionFlag<3) this.status=directionFlag;
}}
return added;
}
public void updateStatus(AllFloors allfloors){
if(this.status==UP){
if (liftIsEmpty()==true) {
if (!allfloors.someoneIsAbove(currentFloor)){
if (allfloors.someoneIsBelow(currentFloor))
this.status=DOWN;
else this.status=STOP; }}}
else if(this.status==DOWN){
if(liftIsEmpty()==true){
if(!allfloors.someoneIsBelow(currentFloor)){
if (allfloors.someoneIsAbove(currentFloor))
this.status=UP;
else this.status=STOP; } }}
else if (this.status==STOP){
if(!liftIsEmpty()){
for(int i=0;i<10;i++){
if(personsInElevator[i].status==1){
this.status =personsInElevator[i].direction();}}}
else if (allfloors.someoneIsAbove(currentFloor)) {
this.status = UP; }
else if (allfloors.someoneIsBelow(currentFloor)){
this.status= DOWN;} }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -