Java 只接受特定范围值的变量
Java variable that only accept a specific range of values
我是新手,所以请多多包涵。我有作业,我不太明白老师的意思。
The class name is Elevator
level stores the current level.
level is an instance-variable of type int
Limit the number of levels from -2 to 10.
Then create a method called goTo(Level: int).(will send messages)
通过限制在特定范围内,我猜他的意思是使用 if 语句?如果我是对的,我会在下面的方法中添加它,因为我无法直接在 class.
中创建 if 语句
还有为什么方法 where(): int 应该达到 return 级别。它从未被使用过...
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;
}
}
从我的角度来看,limit 应该是 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;
}
}
我还更改了您的 class 变量名称,因为在检查电梯是否上升或下降时出现错误,因为您弄错了方法和 class 变量。还有一件事,如果电梯上升或下降,你应该将它分配给你的 class 变量来保存实际楼层。
补充一点:
Limit the number of levels from -2 to 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;
(是的:与 class 字段相比,更愿意将该参数命名为 不同 。该参数实际上是:要移动到的预期新级别。不同名字有助于避免错误)
首先,您在本地 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 (...) {
我是新手,所以请多多包涵。我有作业,我不太明白老师的意思。
The class name is Elevator
level stores the current level. level is an instance-variable of type int
Limit the number of levels from -2 to 10.
Then create a method called goTo(Level: int).(will send messages)
通过限制在特定范围内,我猜他的意思是使用 if 语句?如果我是对的,我会在下面的方法中添加它,因为我无法直接在 class.
中创建 if 语句还有为什么方法 where(): int 应该达到 return 级别。它从未被使用过...
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;
}
}
从我的角度来看,limit 应该是 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;
}
}
我还更改了您的 class 变量名称,因为在检查电梯是否上升或下降时出现错误,因为您弄错了方法和 class 变量。还有一件事,如果电梯上升或下降,你应该将它分配给你的 class 变量来保存实际楼层。
补充一点:
Limit the number of levels from -2 to 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;
(是的:与 class 字段相比,更愿意将该参数命名为 不同 。该参数实际上是:要移动到的预期新级别。不同名字有助于避免错误)
首先,您在本地 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 (...) {