嗨,作为一名学生,我必须创建一个" Rock-Paper-Scissors" Java
中的游戏。
玩家在创建游戏时选择如果他想要遵循一些预先定义的策略,比如播放" Rock-Rock-Paper"例如,我有一个接口来实现差异策略,如RockStrat()
或PaperStrat()
。
当我从控制台创建游戏时,系统会提示用户键入他想要关注的策略,例如,他在PaperStrat中输入。
他的意见是阅读和#34; PaperStrat"保存为String
。
我的问题是我无法弄清楚如何从String
转到调用班级PaperStrat
,而不是为每个策略提供IF
条件但是这似乎太草率了。
任何帮助将不胜感激,谢谢。
答案 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)'