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

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

java - 返回帶有 switch 大小寫的字符串

java - 返回帶有 switch 大小寫的字符串

鳳凰求蠱 2023-07-13 18:12:28
我第一次嘗試使用枚舉。對于某些測試,我想重寫枚舉的 toString 方法并返回帶有所選枚舉的字符串。到目前為止我的代碼如下:@Overridepublic String toString(){    return "Fahrzeuge{" +            switch(this)            {                case MOTORAD: "1"; break;                case LKW: "2"; break;                case PKW: "3"; break;                case FAHRRAD: "4"; break;            }            +            "typ:" + this.typ +            ", ps:" + this.ps +            ", reifen:" + this.reifen +            ", gewicht:" + this.gewicht +            "}";}IntelliJ 強調了我的情況并告訴我以下內容:“不是聲明”=> 我想這是有道理的,如果不允許使用 switch - case 構建字符串。到目前為止一切順利,但似乎不可能返回通過 switch case 構建的字符串,或者我在返回時犯了錯誤?還有其他選項可以返回所選枚舉嗎?我可以添加一個屬性來保存我選擇的枚舉名稱,但我雖然可以做得更簡單一些。
查看完整描述

2 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

switch根據JEP 325?,可以返回以 Java 12 開頭的語句的值。檢查你的 Java 版本,如果它小于 12,那么你不能switch那樣使用,你必須首先將預期值保存在本地變量中。我的觀點是,如果你的 java 版本早于 12,那么你必須這樣做:


String num = "";

switch (this)

{

? ? case MOTORAD:

? ? ? ? num = "1";

? ? ? ? break;

? ? case LKW:

? ? ? ? num = "2";

? ? ? ? break;

? ? case PKW:

? ? ? ? num = "3";

? ? ? ? break;

? ? case FAHRRAD:

? ? ? ? num = "4";

? ? ? ? break;

}


return "Fahrzeuge{" + num +

? ? ? ? ? ? "typ:" + this.typ +

? ? ? ? ? ? ", ps:" + this.ps +

? ? ? ? ? ? ", reifen:" + this.reifen +

? ? ? ? ? ? ", gewicht:" + this.gewicht +

? ? ? ? ? ? "}";

但如果您安裝了 Java 12(或更高版本),那么您可以執行此操作(注意不同的語法!):


return "Fahrzeuge{" +

? ? ? ? ? ? switch (this)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? case MOTORAD -> "1";

? ? ? ? ? ? ? ? case LKW? ? ?-> "2";

? ? ? ? ? ? ? ? case PKW? ? ?-> "3";

? ? ? ? ? ? ? ? case FAHRRAD -> "4";

? ? ? ? ? ? }

? ? ? ? ? ? + "typ:" + this.typ +

? ? ? ? ? ? ", ps:" + this.ps +

? ? ? ? ? ? ", reifen:" + this.reifen +

? ? ? ? ? ? ", gewicht:" + this.gewicht +

? ? ? ? ? ? "}";

請注意,如果數字與聲明枚舉值的順序相對應,您可以簡單地使用ordinal():


return "Fahrzeuge{" + this.ordinal() +

? ? ? ? ? ? "typ:" + this.typ +

? ? ? ? ? ? ", ps:" + this.ps +

? ? ? ? ? ? ", reifen:" + this.reifen +

? ? ? ? ? ? ", gewicht:" + this.gewicht +

? ? ? ? ? ? "}";


查看完整回答
反對 回復 2023-07-13
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

我認為你真的不需要 switch 語句,因為枚舉的超類已經知道你的“類型”的名稱:


@Override

public String toString()

{

    return "Fahrzeuge: " + super.toString() +

            ", ps:" + this.ps +

            ", reifen:" + this.reifen +

            ", gewicht:" + this.gewicht;

}

只需調用超類的 toString() 方法,您就可以獲得當前選擇的枚舉類型的字符串值。您甚至可以刪除您的類型字符串。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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