亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java變量只接受特定范圍的值

Java變量只接受特定范圍的值

POPMUISE 2023-07-19 16:49:09
我對此很陌生,所以請耐心等待。我有作業,我不太明白老師這句話到底是什么意思。班級名稱是電梯level 存儲當前級別。level 是 int 類型的實例變量將級別數限制在 -2 到 10 之間。然后創建一個名為 goTo(Level: int) 的方法。(將發送消息)通過限制到特定范圍,我猜他的意思是使用 if 語句?如果我是對的,我會將其添加到下面的方法中,因為我無法直接在類中創建 if 語句。還有為什么方法 where(): 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;    }}
查看完整描述

3 回答

?
慕碼人8056858

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;

    }


}

另外,我對您的類變量名稱進行了更改,因為在檢查電梯是否上升或下降時出現了錯誤,因為您弄錯了方法和類變量。另一件事是,如果電梯上升或下降,您應該將其分配給您的類變量以保存實際樓層。


查看完整回答
反對 回復 2023-07-19
?
慕哥9229398

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;

(是的:更喜歡以與類字段不同的方式命名該參數。參數實際上是:要移動到的預期新級別。不同的名稱有助于避免錯誤)


查看完整回答
反對 回復 2023-07-19
?
守著星空守著你

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 (...) {


查看完整回答
反對 回復 2023-07-19
  • 3 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號