java 使用构造函数在数字超过某个数字或低于0时将其设置回1

atmip9wb  于 2023-03-06  发布在  Java
关注(0)|答案(1)|浏览(174)

所以我正在写一个程序,当一个名为Floor的变量超过topFloor时,它会重置回1,或者当它低于0时,它也会重置回1。我对Java很陌生,刚刚开始学习构造函数,所以希望能得到一些帮助。
下面是构造函数和方法的代码:

private final int topFloor = 17;
int goToFloor;
private int floor = 1;

 //change floor to 1 if over or under
    Elevator(int floor){
        this.floor = floor;
         if(floor < 0) {
            floor = 1;
         }
         if (floor > topFloor) {
             floor = 1;
         }
        }

//go to floors.
public void goToFloor(int floor) {
        this.floor = floor;
            if (floor > topFloor) {
                System.out.println("Error, Too High!");
            }
            if (floor < 0) {
                System.out.println("Error, Impossible Floor!");
            }
        }

@Override
    public String toString() {
           String s = " Floor = " + floor;
           return s;
        }

下面是我在一个单独的类中打印出该方法的代码:

Elevator southElevator = new Elevator();
Elevator eastElevator = new Elevator();
 
//go to too big
        southElevator.closeDoor();
        southElevator.goToFloor(92);
        System.out.println(southElevator.toString());
         
        //go to a negative number
        southElevator.goToFloor(-8);
        System.out.println(southElevator.toString());

下面是我得到的输出:

Error, Too High!
Floor = 92
Error, Impossible Floor!
Floor = -8

这是我所有的代码,我想它可能与构造函数有关,但我不知道如何修复它。任何帮助将不胜感激。

yzuktlbb

yzuktlbb1#

在构造函数中更改floor时,只更改了floor参数的值,而不是示例字段(this.floor)。在构造函数的最后一行设置this.floor = floor;,这样它的值将根据修改后的floor参数值设置。
对于goToFloor方法,应该对每个错误条件执行重置。仅当参数值有效时才将值设置为参数值。构造函数无法帮助执行此操作,因为示例已经创建。

if (floor > topFloor) {
    System.out.println("Error, Too High!");
    this.floor = 1; // reset
} else if (floor < 0) {
    System.out.println("Error, Impossible Floor!");
    this.floor = 1; // reset
} else {
    this.floor = floor;
}

相关问题