java - “set”方法中的“if”条件不起作用
问题描述
因此,应该能够读取和更改电梯所在的楼层,但只能在安装电梯的那所房子的允许范围内。我试图让“如果”条件工作以寻找布尔真值来自方法“validFloor”。
根据我对 Java 的初学者知识,我认为在 set-method 中放置“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
永远不会改变。此外,您的代码永远不会在任何地方设置为true ,validFloor
因此调用.validFloor()
validFloor
false
false
做这样的事情的“正确”方法是:
public boolean isValidFloor(floor) {
// It seems weird to me that 0 is a valid floor. Is that correct?
// If floors are zero-indexed, the top floor should actually be numberOfFloors-1.
return floor >= 0 && floor <= this.numberOfFloors;
}
public void setFloor(int newFloor) {
if (isValidFloor(newFloor)) {
this.currentFloor = newFloor;
}
}
请注意,甚至不需要保留validFloor
变量。我们可以在每次需要时检查一个楼层是否有效,而无需保存结果。
推荐阅读
- java - 泛型通配符方法的编译错误
- assembly - 消除 Intel 语法中寄存器名称的歧义
- javascript - 无法在 webgl 中将画布渲染为纹理,但会渲染蓝色
- c# - 使用原始 email.body 将电子邮件另存为 .eml
- r - 如何在行不是所有 NA 的数据帧行中替换 NA
- javascript - 从 html 表中的 firebase 中检索同一级别节点的数据
- excel - 使用范围偏移执行直到循环
- python - 如何在 groupadd cloud-init 中制作自定义 GID?
- weaviate - 如何对 Weaviate 中的另一个对象进行交叉引用?
- javascript - 如何找到可以将数组中的数字相加的所有方法