【问题标题】:switch-case pick up specific item in text based java gameswitch-case 在基于文本的 java 游戏中选择特定项目
【发布时间】:2026-02-07 07:05:01
【问题描述】:

我正在用 java 开发一个基于文本的小 rpg,遇到了一个困难的障碍,我找不到解决方案。

游戏管理器是一个简单的 switch-case 扫描器,它根据我的输入执行命令。我想通过输入装备 + 名称来“装备物品”。但是,我认为有比在我的 switch-case 方法中添加一个案例更好的解决方案。如果我的游戏中有 1000 件物品,那就是要经过 1000 箱,一定有更好的方法吧?

如何查看我的输入是否在我的项目类中包含我的项目 ArrayList 的名称?

static void UseCommands() {
        String input = "";
        Scanner sc = new Scanner(System.in);
        while (!input.equals("Close")) {
            input = sc.next();
            switch (input) {


            case "commands":
                PlayerActions.ShowCommands();
                break;    
            case "inventory":
                PlayerActions.ShowInventory();
                break;
            case "equipment":    
                PlayerActions.ShowEquipment();
                break;
            case "spawnItem":    
                Item.SpawnItem();
                break;
            case "addItem":

            case "close":
                sc.close();
                break;
            }
        }

    }

【问题讨论】:

  • 你能添加一些代码吗?它将通过解决方案帮助使用指南
  • 从游戏管理器类中添加了我的代码。是否认为新 ItemDataBase 类中的地图会有所帮助?

标签: java arraylist input switch-statement java.util.scanner


【解决方案1】:

我想到的第一个解决方案是将用户输入拆分为一个空格字符,该字符将返回一个字符串数组,这样您就可以将您的 switch case 保留在 array[0] 上,并使用 case "equip":。

然后你编写你的函数来获取一个参数,这个参数就是数组[1]。请确保拆分返回的数组长度至少为 2,否则您将收到 IndexArrayOutOfBoundException。

【讨论】: