3 回答

TA貢獻1803條經驗 獲得超6個贊
從我的角度來看, 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;
}
}
另外,我對您的類變量名稱進行了更改,因為在檢查電梯是否上升或下降時出現了錯誤,因為您弄錯了方法和類變量。另一件事是,如果電梯上升或下降,您應該將其分配給您的類變量以保存實際樓層。

TA貢獻1877條經驗 獲得超6個贊
一點補充:
將級別數限制在 -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;
(是的:更喜歡以與類字段不同的方式命名該參數。參數實際上是:要移動到的預期新級別。不同的名稱有助于避免錯誤)

TA貢獻1799條經驗 獲得超8個贊
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 (...) {
添加回答
舉報