使用字符串作为方法呼叫者



嗨,作为学生,我必须在 Java中创建一个"岩纸剪辑"游戏。

玩家在创建游戏时选择如果他想遵循一些预定义的策略,例如玩"摇滚纸",所以我有一个界面来实现诸如RockStrat()PaperStrat()的不同策略。

当我从控制台创建游戏时,提示用户要键入他要遵循的Strat,例如,他在纸质strat中键入。他的输入已读取,"纸张strat"保存为String

我的问题是,我不知道如何从String转到类PaperStrat,而不是使用IF条件适合每种可用策略,但这似乎太滑了。

任何帮助将不胜感激。

您可以使用反射,这将是一种非常不干净的方法,我不建议这样做,因为它会使用大锤破裂螺母。

最简单的方法是使用基于字符串的开关语句:

switch (userInput) {
        case "RockStrat":
            //choose rock strat
            break;
        case "PaperStrat":
            //choose paper strat
            break;
        default:
            //choose default strat
            break;
}

您可能使用的另一条条件检查是开关控件。您可以切换检查您从用户输入中获取的字符串,并为每个案例创建一个案例。这样,代码更可读性:切换教程

还认为这个问题是通用的,并且有很多在Java中做事的方法。示例:您甚至可以使用Java反射机制读取字符串参数并通过工厂创建界面,但是对于如此琐碎的任务而言,它将变得太复杂了。

您应该查看dataTructure hashmap,该hashmap将键映射到一个值。一个价值可以是任何形式的。包括班级的对象。

\fill
hmap.put("rock", rockObject);
hmap.put("scissor", scissorObject);
\get
chosenAction = hmap.get(chosenString)'

最新更新