java - "Constant expression required"将字母转为大写或小写时出错

标签 java

此方法对于某种类型的字符串返回 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 boolean 值。

最佳答案

Switch case 语句应该是一个可以在编译时计算的值。 您的 case 语句 opt1.toLowerCase() 只能在运行时评估。

这就是错误“需要常量表达式”的原因。 您应该针对您的用例使用 if 语句。

关于java - "Constant expression required"将字母转为大写或小写时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677496/

相关文章:

java - 如何将资源 ID 作为参数传递;没有空指针异常

Java - 如何仅更改 JLabel 的一部分字体/添加边框

java - 如何解释spring security中的hasPermission?

java - 使 Sprite 移动,需要 Sprite 停留在他第一次移动的位置

java - kafka 0.8.2.2有spring支持吗?

java - 返回 double 的 int 方法

java - 未排序数组中的二进制搜索

java - 写入 Eclipse 控制台

java - Spring的方法注入(inject)

java - Double.parseDouble 如何使我的应用程序崩溃?