此方法對(duì)于某種類型的字符串返回 true 或 false(例如 - Y 或 N(但不總是 Y 和 N))。該方法應(yīng)忽略字母的大小寫(xiě),如果是 Y,則應(yīng)返回 true,如果是 N,則應(yīng)返回 false。如果不滿足Y或N,則提示用戶輸入有效值(即Y或N)并在同一方法中調(diào)用相同的方法。但是當(dāng)我在該方法中傳遞值和 2 個(gè)選項(xiàng)時(shí),它給出了“需要常量表達(dá)式”錯(cuò)誤我嘗試使用常量值而不是傳遞 Y 和 N 作為參數(shù) - 它有效但它總是不是 Y 和 N,它也可能是男性或女性,所以為了使該代碼塊可重復(fù)使用,我正在嘗試這種方法boolean boolHatchedBack = validation.checkTrueFalse(hatchedBack,"N","Y");boolean boolAC =validation.checkTrueFalse(ac,"Male","Female");public boolean checkTrueFalse(String value,String opt1,String opt2){ while (true){ switch (value) { case opt1.toLowerCase(): case opt1.toUpperCase(): return false; case opt2.toLowerCase(): case opt2.toUpperCase(): return true; default: System.out.print("Invalid Value, Please re-enter(Y/N) : "); String val = input.nextLine(); checkTrueFalse(val,opt1,opt2); } }}預(yù)期結(jié)果應(yīng)該是向 main 方法返回 true 或 false 布爾值。
2 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
Switch case 語(yǔ)句應(yīng)該是一個(gè)可以在編譯時(shí)計(jì)算的值。您的 case 語(yǔ)句 opt1.toLowerCase() 只能在運(yùn)行時(shí)評(píng)估。
這就是錯(cuò)誤“需要常量表達(dá)式”的原因。您應(yīng)該針對(duì)您的用例使用 if 語(yǔ)句。

千萬(wàn)里不及你
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
開(kāi)關(guān)case
的 應(yīng)該是一個(gè)常數(shù)。根據(jù) Oracle文檔:
原始類型或 String 類型的變量是最終變量,并使用編譯時(shí)常量表達(dá)式(第 15.28 節(jié))進(jìn)行初始化,稱為常量變量。
而在您的代碼中opt1
和opt2
不是常量。這就是您收到此編譯錯(cuò)誤的原因。因此,在這里使用if-elseIf-else將是一個(gè)更好的選擇。
添加回答
舉報(bào)
0/150
提交
取消