在这个剪刀石头布游戏中,我需要一种不同的方法来确定获胜者。当我运行我的程序时,其余部分运行顺利,但我不会显示获胜者。我认为它们可能是我的代码中的逻辑错误。
public static void determineWinner(String userLower, String comp) {
String user = userLower;
String computer = comp;
if(user.equals(computer)) {
System.out.println("It's a tie!");
} else if(user.equals("rock")) {
if(computer.equals("scissors")) {
System.out.println("You win!");
}
} else if(computer.equals("rock")) {
if(user.equals("scissors")) {
System.out.println("You lose!");
}
} else if(user.equals("scissors")) {
if(computer.equals("paper")){
System.out.println("You win!");
}
} else if(computer.equals("scissors")) {
if(user.equals("paper")) {
System.out.println("You lose");
}
} else if(user.equals("paper")) {
if(computer.equals("rock")) {
System.out.println("You Win!");
}
} else if(computer.equals("paper")) {
if(user.equals("rock")) {
System.out.println("You lose!");
}
}
最佳答案
基本上,您正在测试所有可能的组合(平局除外)。使用石头剪刀布,你会得到 9 种不同的结果,其中 3 种是平局,所以还剩下 6 种。
现在想象一下,您必须对 21 世纪的变体“石头剪刀布蜥蜴史波克”执行此操作:25 种不同的结果。这是一长串 if else
的列表。
但是:所有可能的结果都可以存储到一个表中,并且该表可以根据需要小(或大)。这个表是针对RPSLS的(找不到RPS的),但是原理是一样的:
您垂直选择您的选择,计算机水平选择;那么,左边的数字就是你的分数(显然,1是赢,-1是输),右边的数字是对手。
<小时/>(编辑)这是剪刀石头布的表格。每个组合不需要两个元素,另一个总是与显示的相反。该表在列中显示获胜者,在行中显示失败者。
+----------+-------+-------+--------+
| | Rock | Paper |Scissors|
+----------+-------+-------+--------+
| Rock | 0 | 1 | -1 |
| Paper | -1 | 0 | 1 |
| Scissors | 1 | -1 | 0 |
+----------+-------+-------+--------+
关于java - 石头剪刀布游戏的胜者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214198/