嗨,作为学生,我必须在 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)'