Java中的电梯模拟器帮助

Java中的电梯模拟器帮助,java,simulation,Java,Simulation,我很难用Java完成一个基本的电梯模拟器。到目前为止,我有一个选项,让用户输入他们是想选择楼层、拉火警还是退出模拟。当他们选择“选择楼层”时,他们可以拾取1到100之间的任何楼层,13除外。我不知道该怎么做的是让模拟跟踪他们当前的楼层,这样他们就可以下降了。这就是我到目前为止所做的: public class Elevator { public Elevator() {} public void selectFloor() { Scanner scnr = n

我很难用Java完成一个基本的电梯模拟器。到目前为止,我有一个选项,让用户输入他们是想选择楼层、拉火警还是退出模拟。当他们选择“选择楼层”时,他们可以拾取1到100之间的任何楼层,13除外。我不知道该怎么做的是让模拟跟踪他们当前的楼层,这样他们就可以下降了。这就是我到目前为止所做的:

public class Elevator {

    public Elevator() {}

    public void selectFloor() {
        Scanner scnr = new Scanner(System.in);
        int newFloor;

        System.out.println("Enter the floor you'd like to go to ==> ");
        newFloor = scnr.nextInt();
        if (newFloor > 100 || newFloor < 0 || newFloor == 13) {
            System.out.println("Invalid selection");
        }

        else if (newFloor <= 100 && newFloor > 0 && newFloor != 13) {
            for (int i = 1; i <= newFloor; i++)
                System.out.println("..." + i);
                System.out.println("Ding!");
        }
    }

    public void fireAlarm() {
        System.out.println("Danger, you must exit the building now!");
    }
}
公共级电梯{
公共电梯(){}
公众席(){
扫描仪scnr=新扫描仪(System.in);
新楼国际酒店;
System.out.println(“输入您想去的楼层==>”;
newFloor=scnr.nextInt();
如果(新地板>100 | |新地板<0 | |新地板==13){
System.out.println(“无效选择”);
}
else if(newFloor 0&&newFloor!=13){

对于(int i=1;i通过在类开始标记(位于电梯类构造函数上方)的正下方添加一个
private int floor;
,为您的
电梯对象提供一个类变量。该变量将直接绑定到包含它的电梯对象

这样,当您使用
new lifter
创建电梯时,您还将始终有一个int值可用于固定地板。若要访问此值,请构建一个getter和setter方法。它们应如下所示:

public void setFloor(int floor) {
    this.floor = floor;
}

public int getFloor() {
    return floor;
}
然后,您可以调用这两种方法来设置楼层编号并获取楼层编号。要保持跟踪,在
selectFloor
方法中,您需要使用setFloor并在做出有效选择后将楼层编号传递给它。然后,您可以使用getFloor来确定楼层编号是向上还是向下

创建新电梯对象时,让构造函数将
floor
变量设置为1。只需将构造函数更改为如下所示:

public Elevator() {
    setFloor(1);
}

希望这有帮助!如果您对这些东西的工作方式有任何疑问,请告诉我,我将尝试提供更多详细信息。

电梯
应该有一个
currentFloor
字段,如下所示:

private int currentFloor;
然后,在
selectFloor
中,您需要找到方向。此外,在
selectFloor
中,如果不需要
,则需要使用
else

public class Elevator {
    private int currentFloor;

    public Elevator() {
        currentFloor = 0;
    }

    public void selectFloor() {
        Scanner scnr = new Scanner(System.in);
        int newFloor;

        System.out.println("Enter the floor you'd like to go to ==> ");
        newFloor = scnr.nextInt();
        if (newFloor > 100 || newFloor < 0 || newFloor == 13) {
            System.out.println("Invalid selection");
        }

        else {  // The if was not necessary
            int direction = 0;
            if(currentFloor < newFloor){
                direction = 1; // going up;
            } else if (currentFloor > newFloor) {
                direction = -1; //going down;
            } else {
                direction = 0; //going nowhere;
            }
            for (; currentFloor != newFloor; currentFloor += newFloor)
                System.out.println("..." + i);
                System.out.println("Ding!");
        }
    }

    public void fireAlarm() {
        System.out.println("Danger, you must exit the building now!");
    }
}
公共级电梯{
私人楼层;
公共电梯(){
currentFloor=0;
}
公众席(){
扫描仪scnr=新扫描仪(System.in);
新楼国际酒店;
System.out.println(“输入您想去的楼层==>”;
newFloor=scnr.nextInt();
如果(新地板>100 | |新地板<0 | |新地板==13){
System.out.println(“无效选择”);
}
否则{//if是不必要的
int方向=0;
如果(当前楼层<新楼层){
方向=1;//向上;
}否则如果(当前楼层>新建楼层){
方向=-1;//向下;
}否则{
方向=0;//无处可去;
}
对于(;currentFloor!=newFloor;currentFloor+=newFloor)
System.out.println(“…”+i);
System.out.println(“叮!”);
}
}
公共火灾警报(){
System.out.println(“危险,你必须马上离开大楼!”);
}
}

注意:我还没有对此进行测试,所以我不能确定它是否正确。

我刚刚插入了一个名为backToBasement()的新方法,并将其绑定到您的selectFloor()方法中。希望它有帮助

public void selectFloor() {
        Scanner scnr = new Scanner(System.in);
        int newFloor;

        System.out.println("Enter the floor you'd like to go to ==> ");
        newFloor = scnr.nextInt();
        if (newFloor > 100 || newFloor < 0 || newFloor == 13) {
            System.out.println("Invalid selection");
        }

        else if (newFloor <= 100 && newFloor > 0 && newFloor != 13) {
            for (int i = 1; i <= newFloor; i++)
                System.out.println("..." + i);
                System.out.println("Ding!");
                backToBasement(newFloor);
        }
    }

    public void fireAlarm() {
        System.out.println("Danger, you must exit the building now!");
    }

    public void backToBasement(int newFloor){
        for (int i=newFloor; i>0;i--){
             System.out.println("..." + i);
        }
        System.out.println("Ding!... Back to Ground Level");

    }
public void selectFloor(){
扫描仪scnr=新扫描仪(System.in);
新楼国际酒店;
System.out.println(“输入您想去的楼层==>”;
newFloor=scnr.nextInt();
如果(新地板>100 | |新地板<0 | |新地板==13){
System.out.println(“无效选择”);
}
else if(newFloor 0&&newFloor!=13){
对于(int i=1;i 0;i--){
System.out.println(“…”+i);
}
System.out.println(“叮!…返回地面”);
}

您不能添加一个实例变量来存储currentFloor吗?谢谢大家。我已经很好地解决了这个问题!尝试解决多部电梯的问题,任何一部电梯都可以先上!我不完全确定如何在我的selectFloor方法中实现getFloor和setFloor。到目前为止,我使用了setFloor(floor)在floor=scnr.nextInt()之后,但我不确定这是否有效