使用String作为方法调用者

时间:2018-03-27 14:14:22

标签: java

嗨,作为一名学生,我必须创建一个" Rock-Paper-Scissors" Java中的游戏。

玩家在创建游戏时选择如果他想要遵循一些预先定义的策略,比如播放" Rock-Rock-Paper"例如,我有一个接口来实现差异策略,如RockStrat()PaperStrat()

当我从控制台创建游戏时,系统会提示用户键入他想要关注的策略,例如,他在PaperStrat中输入。 他的意见是阅读和#34; PaperStrat"保存为String

我的问题是我无法弄清楚如何从String转到调用班级PaperStrat,而不是为每个策略提供IF条件但是这似乎太草率了。

任何帮助将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:2)

你可以使用Reflections, 这将是一个非常不干净的方式,我不会推荐它,因为它将使用大锤来破解坚果。

最简单的方法是使用基于String的switch语句,如下所示:

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

答案 1 :(得分:0)

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

还要考虑这个问题是通用的,并且在Java中有很多方法可以做。 示例:您甚至可以使用Java Reflection机制来读取String参数并通过工厂创建接口,但是这样做对于这样一个微不足道的任务来说会变得太复杂。

答案 2 :(得分:0)

您应该查看数据结构hashmap,它将键映射到值。值可以是任何类型。包括一个类的对象。

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