⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elevator.java

📁 用Java实现的电梯模拟程序。某公司要建造一栋n层的办公楼并用“最先进“的电梯进行装备
💻 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 + -