Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在电梯系统中增加两个回路?_Java_Loops - Fatal编程技术网

Java 在电梯系统中增加两个回路?

Java 在电梯系统中增加两个回路?,java,loops,Java,Loops,因此,我正在创建一个电梯系统,以配合另一段代码。该系统目前运行良好,但我想添加一个while循环,以便在选择无效楼层时,我有机会在代码的这一点上重试另一个楼层 public static void selectFloor() { Scanner scnr = new Scanner(System.in); int newFloor; System.out.println("Enter your destination floor >>

因此,我正在创建一个电梯系统,以配合另一段代码。该系统目前运行良好,但我想添加一个while循环,以便在选择无效楼层时,我有机会在代码的这一点上重试另一个楼层

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

        System.out.println("Enter your destination floor >>> ");
        newFloor = scnr.nextInt();
        if (newFloor > 7 || newFloor < 0) {
            System.out.println("Invalid floor entry");
        }
        else {  
            int direction = 0;
            if(currentFloor < newFloor){
                direction = 1; 
            } else if (currentFloor > newFloor) {
                direction = -1; ;
            } else {
                direction = 0; 
            }
            for (; currentFloor != newFloor; currentFloor += direction)
                System.out.println("..." + currentFloor);
                System.out.println("Elevator has arrived!");
        }
    }

    public void fireAlarm() {
        System.out.println("***FIRE ALARM*** Please exit the building safely.");


}

}
public static void selectFloor(){
扫描仪scnr=新扫描仪(System.in);
新楼国际酒店;
System.out.println(“输入您的目的楼层>>”;
newFloor=scnr.nextInt();
如果(新楼层>7 | |新楼层<0){
System.out.println(“无效楼层入口”);
}
我还想在系统中添加另一个循环,这样一旦选择了一个楼层,电梯到达目的楼层,该循环将允许用户在一个永无止境的循环中从当前楼层选择另一个目的地

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

        System.out.println("Enter your destination floor >>> ");
        newFloor = scnr.nextInt();
        if (newFloor > 7 || newFloor < 0) {
            System.out.println("Invalid floor entry");
        }
        else {  
            int direction = 0;
            if(currentFloor < newFloor){
                direction = 1; 
            } else if (currentFloor > newFloor) {
                direction = -1; ;
            } else {
                direction = 0; 
            }
            for (; currentFloor != newFloor; currentFloor += direction)
                System.out.println("..." + currentFloor);
                System.out.println("Elevator has arrived!");
        }
    }

    public void fireAlarm() {
        System.out.println("***FIRE ALARM*** Please exit the building safely.");


}

}
else{
int方向=0;
如果(当前楼层<新楼层){
方向=1;
}否则如果(当前楼层>新建楼层){
方向=-1;
}否则{
方向=0;
}
对于(;currentFloor!=新建楼层;currentFloor+=方向)
系统输出打印项次(“…”+当前楼层);
System.out.println(“电梯到了!”);
}
}
公共火灾警报(){
System.out.println(“***火警***请安全离开大楼。”);
}
}

由于我的代码的结构,我不知道如何做到这一点。如何添加这两个循环?

您显然需要一个循环,它将永远循环,直到键盘输入的中断信号发送为止(假设它是数字
-1

public static void selectFloor(){
扫描仪scnr=新扫描仪(System.in);
int newFloor=0;//初始化为0
while(newFloor!=-1){//永远循环,直到用户给出-1作为输入
System.out.println(“输入您的目的楼层>>”;
System.out.println(“要退出程序,请输入:-1”);//告诉用户如何退出
newFloor=scnr.nextInt();
如果(新楼层>7 | |新楼层<0){
//如果逻辑
}否则{
//else逻辑
}
}
}

您可以这样尝试:

Scanner scnr = new Scanner(System.in);
int newFloor;
while (true) {
    System.out.print("Enter your destination floor >>> ");
    newFloor = scnr.nextInt();
    if (newFloor >= 0 && newFloor <= 7) break;
    System.out.println("Invalid floor entry");
};

int direction = Math.signum(newFloor - currentFloor);
while (currentFloor != newFloor) {
    currentFloor += direction;
    System.out.println("..." + currentFloor);
}
System.out.println("Elevator has arrived!");    }
Scanner scnr=新扫描仪(System.in);
新楼国际酒店;
while(true){
系统输出打印(“进入目的地楼层>>”;
newFloor=scnr.nextInt();

如果(newFloor>=0&&newFloor这是我的方法。我将整个交互分为三种方法:第一种“讲述故事”。第二种方法处理新楼层的输入,第三种方法乘坐电梯到达目的楼层。因此,每种方法都有明确的责任,可以在以后的阶段根据需要进行更改

// Handles the whole thing
public static void elevatorAction() {
    int currentFloor = 1;
    int destinationFloor;

    while(true) {
        destinationFloor = selectNewFloor();
        goToDestinationFloor(currentFloor, destinationFloor);
        System.out.println("The elevator has arrived");
        currentFloor = destinationFloor;
    }
}

// Handles the traveling
public static void goToDestinationFloor(int currentFloor, int destinationFloor) {
    int increment;

    if(currentFloor == destinationFloor) {
        return;
    }

    increment = (currentFloor < destinationFloor? 1: -1);
    while(currentFloor != destinationFloor) {
        currentFloor += increment;
        System.out.println("..." + currentFloor);
    }
}

// Lets the user select a new destination floor for the elevator
public static int selectNewFloor() {
    Scanner scnr = new Scanner(System.in);
    int tempNewFloor;

    System.out.println("Please choose your destination floor.");
    while((true) {
        tempNewFloor = scnr.nextInt();
        if(tempNewFloor < 0 || tempNewFloor > 7) {
            System.out.println("Next floor: " + tempNewFloor);
            break;
         } else {
            System.out.println("Invalid input: Please choose a floor between 1 and 7");
        }
    }
}
//处理整个事情
公共静态无效升降机动作(){
int currentFloor=1;
目的地层;
while(true){
destinationFloor=选择newfloor();
goToDestinationFloor(当前楼层、目标楼层);
System.out.println(“电梯已经到达”);
当前楼层=目的楼层;
}
}
//负责旅行
公共静态无效goToDestinationFloor(int currentFloor,int destinationFloor){
整数增量;
如果(当前楼层==目的楼层){
返回;
}
增量=(当前楼层7){
System.out.println(“下一层:+tempNewFloor”);
打破
}否则{
System.out.println(“无效输入:请选择1到7之间的楼层”);
}
}
}

我想你的for循环中有一个错误。应该是currentFloor+=方向吗?你不需要两个循环,一个就可以了。@Harmlezz是的,应该是,我的错误,谢谢!看看我的答案。代码不是很干净,但也许你可以继续工作。玩得开心!