【问题标题】:Switch case yield开关盒良率
【发布时间】:2022-08-18 16:07:19
【问题描述】:

为什么dis不起作用

我不会有产量的开关盒。但它不编译

userColor 是用户输入的。数据类型字符串

String animalColor = switch (userColor) {
            case \"green\" -> {
                if (animal.equals(\"Frog\")) yield \"Frog\";
              
            }
            case \"yellow\" -> {
                yield \"Budgie\";
            }
            case \"pink\" -> {
                yield \"Pig\";
            }
            case \"brown\" -> {
                yield \"Cow\";
            }
            case \"black\" -> {
                yield \"Panther\";
            }
            case \"white\" -> {
                yield \"Mouse\";
            }
            case \"white/black\" -> {
                yield animal;
            }
            case \"gold\" -> {
                yield \"Goldfish\";
            }
            default -> {
                yield \"Unknown\";
            }
        };

如果它是青蛙或逆戟鲸,她会是什么样子……

  String animal = \"\";
        if (Objects.equals(userColor, \"green\")) {
            System.out.println(\"Do you mean Frog\");
            String isFrog = myObj.nextLine();  // Read user input
            isFrog = isFrog.toLowerCase(Locale.ROOT);
            if (Objects.equals(isFrog, \"yes\")) {
                animal = \"Frog\";
            }
        } else if (Objects.equals(userColor, \"white/black\")) {
            while (true) {
                System.out.println(\"Do you mean Orca or Zebra\");
                String isOrcaOrZebra = myObj.nextLine();  // Read user input
                isOrcaOrZebra = isOrcaOrZebra.toLowerCase(Locale.ROOT);
                if (Objects.equals(isOrcaOrZebra, \"orca\")) {
                    animal = \"Orca\";
                    break;
                } else if (Objects.equals(isOrcaOrZebra, \"zebra\")) {
                    animal = \"Zebra\";
                    break;
                } else {
                    System.out.println(\"Type Orca or Zebra\");
                }
            }
        }

但是编译很容易

全部编译,但不区分大小写。 它说: 切换表达式规则应在所有执行路径中产生结果

感谢帮助

  • 那么如果userColorgreen,而animal 不是Frog,那么animalColor 会是什么?
  • 我为你编辑了
  • 您的编辑根本没有回答我的问题。第二段代码与 switch 表达式有什么关系?

标签: java


【解决方案1】:

你也可以这样

   String animalColor = switch (userColor) {
            case "green" -> {
                if (animal.equals("Frog")) yield "Frog";
                yield "";
            }
            case "yellow" -> {
                yield "Budgie";
            }
            case "pink" -> {
                yield "Pig";
            }
            case "brown" -> {
                yield "Cow";
            }
            case "black" -> {
                yield "Panther";
            }
            case "white" -> {
                yield "Mouse";
            }
            case "white/black" -> {
                yield animal;
            }
            case "gold" -> {
                yield "Goldfish";
            }
            default -> {
                yield "Unknown";
            }
        };

【讨论】:

  • 啊,谢谢。这对我来说更好
【解决方案2】:

你需要一个 else by if

  String animalColor = switch (userColor) {
            case "green" -> {
                if (animal.equals("Frog")) yield "Frog";
                else yield "Snake";
            }
            case "yellow" -> {
                yield "Budgie";
            }
            case "pink" -> {
                yield "Pig";
            }
            case "brown" -> {
                yield "Cow";
            }
            case "black" -> {
                yield "Panther";
            }
            case "white" -> {
                yield "Mouse";
            }
            case "white/black" -> {
                yield animal;
            }
            case "gold" -> {
                yield "Goldfish";
            }
            default -> {
                yield "Unknown";
            }
        };

【讨论】:

  • 哦,好的,谢谢。它工作谢谢
【解决方案3】:

你可以用更简洁的方式来写这个;不必为每种情况设置块并使用yield

String animalColor = switch (userColor) {
    case "green" -> animal.equals("Frog") ? "Frog" : "???";
    case "yellow" -> "Budgie";
    case "pink" -> "Pig";
    case "brown" -> "Cow";
    case "black" -> "Panther";
    case "white" -> "Mouse";
    case "white/black" -> animal;
    case "gold" -> "Goldfish";
    default -> "Unknown";
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多