此方法对于某种类型的字符串返回 true 或 false(例如 - Y 或 N(但不总是 Y 和 N))。该方法应忽略字母的大小写,如果是 Y,则应返回 true,如果是 N,则应返回 false。如果不满足Y或N,则提示用户输入有效值(即Y或N)并在同一方法中调用相同的方法。但是当我在该方法中传递值和 2 个选项时,它给出了“需要常量表达式”错误我尝试使用常量值而不是传递 Y 和 N 作为参数 - 它有效但它总是不是 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
的 应该是一个常数。根据 Oracle文档:
原始类型或 String 类型的变量是最终变量,并使用编译时常量表达式(第 15.28 节)进行初始化,称为常量变量。
而在您的代码中opt1
和opt2
不是常量。这就是您收到此编译错误的原因。因此,在这里使用if-elseIf-else将是一个更好的选择。
添加回答
举报
0/150
提交
取消