我是新手,所以请耐心等待。我有作业,我真的不明白老师到底是什么意思。
类名是电梯
级别存储当前级别。 level 是 int 类型的实例变量
将级别数限制为 -2 到 10。
然后创建一个名为goTo(Level: int(的方法。(将发送消息(
通过限制在特定范围,我猜他的意思是使用 if 语句?如果我是对的,我是否将其添加到下面的方法中,因为我无法直接在类中创建 if 语句。
还有为什么方法在哪里((:int应该返回level。它从未使用过...
public class Elevator {
int level = 0;
public void goTo(int level){
if (level < this.level){
System.out.println("Elevator going up to floor " + level);
}
else if (level > this.level){
System.out.println("Elevator going down to floor " + level);
}
else if (level == this.level){
System.out.println("Elevator already on the floor " + level);
}
}
public int where(){
return level;
}
}
在我看来,限制应该是 goTo 方法中的 if 语句,以防止发送级别不同于 -2 到 10。所以它应该看起来像这样:
public class Elevator {
int actualLevel = 0;
public void goTo(int level) {
if (level < -2 || level > 10) {
System.out.println("Invalid level!. Levels range is -2 to 10.");
return;
}
if (level > actualLevel) {
System.out.println("Elevator going up to floor " + level);
this.actualLevel = level;
} else if (level < actualLevel) {
System.out.println("Elevator going down to floor " + level);
this.actualLevel = level;
} else if (level == actualLevel) {
System.out.println("Elevator already on the floor " + level);
}
}
public int where() {
return this.actualLevel;
}
}
此外,我还更改了您的类变量名称,因为检查 elevetator 是上升还是下降时出错,因为您错误地输入了方法和类变量。还有一件事,如果电梯上升或下降,您应该将其分配给您的类变量以保持实际楼层。
一点附录:
将级别数限制为 -2 到 10。
这里真正的问题不是你需要一系列 if/else 语句。它实际上是(省略的(细节:如何对错误的输入做出反应。在您的情况下,您可能没问题:当提供错误的数字时,goTo()
方法什么都不做。
然而,在更复杂的情况下,以某种方式告诉该方法的调用者可能更合适:你对我的输入是无效的。例如,通过抛出某种排序异常。
回到这个简单的案例,你的代码中缺少的是:当用户选择一个有效的新关卡时,你希望分配发生:
if(newLevel < - 2 || newLevel > 10 ) {
... // checks for valid input
if (newLevel < newLevel) {
... // the required print statements
// finally, make the elevator actually go to the new level
level = newLevel;
(是的:更喜欢以不同于类字段的方式命名该参数。 参数实际上是:要移动到的预期新级别。 一个独特的名称有助于避免错误(
首先,你在本地level
和电梯层之间有一个小的混淆。
现在最小和最大水平是电梯的属性。您也可以将它们存储为(常量(字段。 下面我直接在代码中使用它们。这并不容易理解,房子有那些楼层。
public class Elevator {
int cabinLevel = 0;
public void goTo(int level) {
if (level < -2) {
return;
}
if (level Y > 12) {
return;
}
if (level < this.cabinLevel){
System.out.println("Elevator going D O W N to floor " + level);
cabinLevel = level;
} else if (...) {