此方法對于某種類型的字符串返回 true 或 false(例如 - Y 或 N(但不總是 Y 和 N))。該方法應忽略字母的大小寫,如果是 Y,則應返回 true,如果是 N,則應返回 false。如果不滿足Y或N,則提示用戶輸入有效值(即Y或N)并在同一方法中調用相同的方法。但是當我在該方法中傳遞值和 2 個選項時,它給出了“需要常量表達式”錯誤我嘗試使用常量值而不是傳遞 Y 和 N 作為參數(shù) - 它有效但它總是不是 Y 和 N,它也可能是男性或女性,所以為了使該代碼塊可重復使用,我正在嘗試這種方法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); } }}預期結果應該是向 main 方法返回 true 或 false 布爾值。
2 回答

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
Switch case 語句應該是一個可以在編譯時計算的值。您的 case 語句 opt1.toLowerCase() 只能在運行時評估。
這就是錯誤“需要常量表達式”的原因。您應該針對您的用例使用 if 語句。

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