3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
從我的角度來看, limit 應(yīng)該是 goTo 方法中的 if 語(yǔ)句,以防止發(fā)送級(jí)別不同于 -2 到 10 的級(jí)別。所以它應(yīng)該看起來像這樣:
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;
}
}
另外,我對(duì)您的類變量名稱進(jìn)行了更改,因?yàn)樵跈z查電梯是否上升或下降時(shí)出現(xiàn)了錯(cuò)誤,因?yàn)槟e(cuò)了方法和類變量。另一件事是,如果電梯上升或下降,您應(yīng)該將其分配給您的類變量以保存實(shí)際樓層。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
一點(diǎn)補(bǔ)充:
將級(jí)別數(shù)限制在 -2 到 10 之間。
這里真正的問題不是您需要一系列 if/else 語(yǔ)句。它實(shí)際上是(被遺漏的)細(xì)節(jié):如何對(duì)錯(cuò)誤輸入做出反應(yīng)。在您的情況下,您可能會(huì)同意:當(dāng)提供錯(cuò)誤的數(shù)字時(shí),該方法什么也不goTo()做。
然而,在更復(fù)雜的情況下,以某種方式告訴該方法的調(diào)用者可能更合適:您給我的輸入無效。例如通過拋出某種排序異常。
回到這個(gè)簡(jiǎn)單的情況,您的代碼中缺少的是:當(dāng)用戶選擇有效的新級(jí)別時(shí),您希望發(fā)生該分配:
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;
(是的:更喜歡以與類字段不同的方式命名該參數(shù)。參數(shù)實(shí)際上是:要移動(dòng)到的預(yù)期新級(jí)別。不同的名稱有助于避免錯(cuò)誤)

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
level首先,本地層和電梯層之間存在一些小小的混淆。
現(xiàn)在最小和最大級(jí)別是電梯的屬性。您也可以將它們存儲(chǔ)為(常量)字段。下面我直接在代碼中使用它們。這并不容易理解,房子只有這些樓層。
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 (...) {
添加回答
舉報(bào)