【问题标题】:How to Make it so that the User ends this program?如何使用户结束该程序?
【发布时间】:2017-01-25 07:22:19
【问题描述】:
// ************************************************************
// ELEVATOR.java
//
// ELEVAOTR SIMULATION
// PROBLEM: NEED TO FIND A WAY TO AMKE IT SO THAT THE PROGRAM KEEPS RNNING AFTER USER INPUTS 
// THIER FIRST DESIRED FLOOR.
// ************************************************************
import java.util.*;


public class Elevator_Simulation {

    public static void main (String[] args) { 
        Person User = new Person();
        Floor floors = new Floor();
        floors.moveElevator(User.getDesiredFloor()); 

    }
}

class Elevator { //NEEDS SETTER & GETTER METHODS 
    private int mass=0;
    private int capcity=0; 
    private String name="";
    private String color="";
}

class Floor { 


    ArrayList<Object> floorLevel = new ArrayList<Object>();

    Elevator Lift = new Elevator();
    Person Man = new Person();

    Floor() { //Floors 0-9
        floorLevel.add(Lift); //0
        floorLevel.add(null); //1
        floorLevel.add(null); //2
        floorLevel.add(null); //3
        floorLevel.add(null); //4
        floorLevel.add(null); //5
        floorLevel.add(null); //6
        floorLevel.add(null); //7
        floorLevel.add(null); //8
        floorLevel.add(null); //9
        }
        System.out.println("Elevator is at Floor: " + floorLevel.indexOf(Lift)  );


    public void moveElevator (int chosenFloor) {

        if (chosenFloor > 9) {
            System.out.println("Woooooah Buddy! You can only choose 0-9!");
            return;
        }
        if (chosenFloor == floorLevel.indexOf(Lift)) {
            System.out.println("Bro you're already on that floor...");
        }

            while (floorLevel.indexOf(Lift)>chosenFloor) {
                Collections.swap(floorLevel, floorLevel.indexOf(Lift), ( floorLevel.indexOf(Lift)-1 ) );
                System.out.println(floorLevel.indexOf(Lift) );
            }
            while (floorLevel.indexOf(Lift)<chosenFloor) {
                Collections.swap(floorLevel, floorLevel.indexOf(Lift), ( floorLevel.indexOf(Lift)+1 ) );
                System.out.println(floorLevel.indexOf(Lift) );
            }   

    }
}

class Person { 
    Scanner scan = new Scanner(System.in);
    public int getDesiredFloor() {
        int desiredFloor = scan.nextInt();
        return desiredFloor;
    }
}

上面是电梯模拟器代码(在我尝试使用 GUI 制作之前),除了明显的初学者缺陷外,我唯一的问题是我很难找到一种方法来制作它,以便程序一旦用户输入一层,就不会结束。我至少希望程序运行到用户用命令结束它。我正在考虑在某处使用while循环,但在哪里?请帮助并指出我应该在这段代码中改进的地方。

【问题讨论】:

  • 顺便说一句,考虑将if (chosenFloor &gt; 9) 更改为if (chosenFloor &gt; 9 || chosenFloor &lt; 0)

标签: java loops simulator


【解决方案1】:

您可以将while 循环放在该行周围

floors.moveElevator(User.getDesiredFloor());

只需为表示退出的值添加输入检查。

【讨论】:

  • 谢谢!这是有道理的,虽然我必须在命令行中输入两次才能让它运行,为什么?
  • @JevonÇøö 不,可能是因为您发布的代码与您正在运行的代码不同。如果您在我提到的行之前添加while(true),它就可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 2018-03-26
  • 2020-02-15
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
相关资源
最近更新 更多