【发布时间】:2017-03-27 01:34:31
【问题描述】:
我正在为 Rock, Paper, Scissors 游戏编写一段代码。我正在编写一个返回 1、0 或 -1 的方法,具体取决于计算机获胜、平局或用户获胜。到目前为止我有这个代码:
private int nextPlay(char computerMove, char playerMove) {
switch (playerMove) {
case 'R': switch (computerMove) {
case 'R': return 0;
case 'P': return 1;
case 'S': return -1;
}
case 'P': switch (computerMove) {
case 'R': return -1;
case 'P': return 0;
case 'S': return 1;
}
case 'S': switch (computerMove) {
case 'R': return 1;
case 'P': return -1;
case 'S': return 0;
}
}
}
它在最后一个括号中向我抛出“缺少返回声明”。有什么建议吗?
附: computerMove 和 playerMove 唯一可用的选项是 R、P 和 S!
【问题讨论】:
-
添加默认情况并执行一些错误处理
-
如果
playerMove不是'R'、'P'或'S'会发生什么?请记住,就编译器所知,它可以有任何字符值。在方法末尾添加throw new IllegalStateException("Oops! I messed up!!")。 -
编译器不知道唯一可用的选项是
R、P和S。从它的角度来看,他们可以是任何其他角色。 -
好的,谢谢大家,我尝试了所有建议,如果我尝试任何修复,似乎都无法修复弹出的错误集群,我认为这是整个程序的错误,而不是我正在处理的部分。谢谢大家!
-
我建议你只使用带有嵌套 if 的 if-else 结构
标签: java switch-statement return case