开关盒拾取基于文本的java游戏中的特定项目

开关盒拾取基于文本的java游戏中的特定项目,java,arraylist,input,switch-statement,java.util.scanner,Java,Arraylist,Input,Switch Statement,Java.util.scanner,我在用java开发一个基于文本的小型rpg时遇到了一个困难的障碍,我找不到解决方案 游戏管理器是一个简单的开关盒扫描仪,它根据我的输入执行命令。我想通过键入设备+名称来“装备物品”。但是,我认为有一个比在switch-case方法中添加case更好的解决方案。如果我的游戏中有1000件物品,那就需要处理1000个箱子,一定有更好的方法,对吗 如果我的输入在我的item类中包含我的item ArrayList的名称,我该如何查看 static void UseCommands() {

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

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

如果我的输入在我的item类中包含我的item 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;
            }
        }

    }

我想到的第一个解决方案是将用户输入拆分为一个空格字符,该字符将返回一个字符串数组,这样您就可以在数组[0]上保留开关大小写,并使用大小写“Equipment”:


然后对函数进行编码,以获取数组[1]中的参数。只需确保拆分返回的数组长度至少为2,否则将得到IndexArrayOutOfBoundException。

是否可以添加一些代码?它将有助于通过游戏管理器类中添加我的代码的解决方案使用指南。我在想也许在一个新的ItemDataBase类中添加一个映射会有所帮助?