如何在 Java 中的 switch 语句中添加同义词?

问题描述

我有下面的功能,我想为每个案例添加同义词,例如案例“north”也可以是“up”,案例“east”可能是正确的等等。因为所有案例都属于同一个try/catch声明我不确定如何为每个特定案例做到这一点。感谢任何帮助!谢谢

public void changeRoom(boolean isValidInput,String[] input,int attemptCount) {
        while (isValidInput) {
            switch (input[1]) {
                case "north":
                case "east":
                case "south":
                case "west":
                    try {
                        if (world.getCurrentRoom().roomExits.containsKey(input[1])) {
                            player.setMostRecentExit(input[1]);
                            world.setCurrentRoom(world.getCurrentRoom().roomExits.get(input[1]));
                            isValidInput = false;
                            if (isSound) {
                                walkEffect.playSoundEffect();
                            }
                            Thread.sleep(1800);
                            narrateRooms(world.getCurrentRoom().getDescription());
                            break;
                        }
                    } catch (InterruptedException e) {
                        e.printstacktrace();
                    }
                default:
                    System.out.println("You hit a wall. Try again: ");
                    System.out.print(">>>");
                    attemptCount++;
                    if (attemptCount >= 2) {
                        System.out.println();
                        openMap();
                        System.out.println("Where would you like to go? ");
                        System.out.print(">>>");
                    }
                    input = scanner.nextLine().strip().toLowerCase().split(" ");
                    break;
            }
        }

解决方法

就这样列出那些案例:

switch (input[1]) {
            case "north": case "up":
            case "east": case "right":
            case "south": case "down":
            case "west": case "left":
,

我能够通过创建下面的函数来规范化输入。谢谢大家!

public String normalizeText(String input) {
    List<String> northOptions = Arrays.asList("north","up");
    List<String> southOptions = Arrays.asList("south","down");
    List<String> eastOptions = Arrays.asList("east","right");
    List<String> westOptions = Arrays.asList("west","left");
    if (northOptions.contains(input.toLowerCase())) {
        return "north";
    }
    if (southOptions.contains(input.toLowerCase())) {
        return "south";
    }
    if (eastOptions.contains(input.toLowerCase())) {
        return "east";
    }
    if (westOptions.contains(input.toLowerCase())) {
        return "west";
    }
    return "";
}