【发布时间】:2019-02-16 01:08:34
【问题描述】:
所以应该能够读取和更改电梯所在的楼层,但只能在安装电梯的那所房子的允许范围内。我正在尝试让“如果”条件工作以寻找来自方法“validFloor”的布尔真值。
根据我对 Java 的初级知识,我认为在 set 方法中放置“If”条件是一种正确的尝试?
private int currentFloor = 0;
private int numberOfFloors;
private boolean validFloor = false;
public Elevator(int numberOfFloors) {
this.numberOfFloors = numberOfFloors;
}
//Sets the allowed number of floors (0 to 100)
public void allowedNumberOfFloors() {
if (numberOfFloors < 2) {
numberOfFloors = 2;
} else if (numberOfFloors > 100) {
numberOfFloors = 100;
}
}
//Checks validity of the elevator floor in relation to total floors.
public void validFloor() {
if (currentFloor > numberOfFloors && currentFloor < 0) {
this.validFloor = false;
}
}
//Checks whether the specified floor is in reasonable range.
public void setFloor(int currentFloor) {
if (validFloor) {
this.currentFloor = currentFloor;
}
}
public int getFloor() {
return currentFloor;
}
public String toString() {
return "Number of floors: " + numberOfFloors + "\nCurrent floor: " + currentFloor;
}
例如,如果您试图在只有 5 层楼的房子中将电梯移至 74 楼,它应该不起作用。我希望嘶嘶声从底层 0 开始,因此类变量“currentFloor”中的 0 值。
“validFloor”方法中的 If 条件似乎根本无法识别。相反,重要的是我放在类变量 validFloor 上的布尔值。
【问题讨论】:
-
你调用了validFloor()方法,你只是读取了布尔变量。
-
检查你的逻辑表达式:这可能吗?
-
为什么会有
validFloor的成员以及validFloor的方法? -
validFloor方法可能应该带一个参数(要检查的楼层号)。当数字无效时,setter 可能应该抛出一个异常,而不是什么都不做。