为了账号安全,请及时绑定邮箱和手机立即绑定

将字母转为大写或小写时出现“需要常量表达式”错误

将字母转为大写或小写时出现“需要常量表达式”错误

莫回无 2024-01-25 15:55:29
此方法对于某种类型的字符串返回 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 语句。


查看完整回答
反对 回复 2024-01-25
?
千万里不及你

TA贡献1784条经验 获得超9个赞

开关case的 应该是一个常数。根据 Oracle文档:

原始类型或 String 类型的变量是最终变量,并使用编译时常量表达式(第 15.28 节)进行初始化,称为常量变量。

而在您的代码中opt1opt2不是常量。这就是您收到此编译错误的原因。因此,在这里使用if-elseIf-else将是一个更好的选择。


查看完整回答
反对 回复 2024-01-25
  • 2 回答
  • 0 关注
  • 37 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信