Java 使用模数的爪哇岩剪
我被困在模量计算以及这个游戏的条件上。有什么建议吗Java 使用模数的爪哇岩剪,java,Java,我被困在模量计算以及这个游戏的条件上。有什么建议吗 { public static void main(String[] args) { int x, comp, result; x = 0; String user; String computer_choice = null; //declare variables for each value // generate computer number com
{
public static void main(String[] args)
{
int x, comp, result;
x = 0;
String user;
String computer_choice = null; //declare variables for each value
// generate computer number
comp = (int) (3 * Math.random()) + 1 ;
System.out.println (comp);
//convert# to a value
if (comp == 0 )
{
computer_choice = "Rock";
}
else if (comp == 1 )
{
computer_choice = "Paper";
}
else if (comp == 2 )
{
computer_choice = "Scissor";
}
// print out the message
System.out.println ("Please select one of [R/P/S]: ");
Scanner keyboard = new Scanner (System.in);
user = keyboard.nextLine();
if (user.equals ("R")|| user.equals("r"))
{
user = "Rock";
x = 0; // rock
}
else if (user.equals ("P")|| user.equals("p"))
{
user = "Paper";
x = 1;//paper
}
else if (user.equals ("S")|| user.equals("s"))
{
user = "Scissor";
x = 2;
}
else
{ System.out.println ("Please enter a valid values");
}
System.out.println ("You chose: " + user);
//print out the computer choice
System.out.println ("I chose\t" + computer_choice);
result = (comp - x ) % 3 ;
System.out.println (result);
if (result == 0 )// if the game is tie
{
System.out.println ("A Tie!") ;
}
else if (result == 1 || result == 2 )
{
System.out.println ("comp win");
}
else
{
System.out.println ("you win");
}
}
}
你的情况总是会导致平局或电脑获胜 根据规则: 0拍2拍
1拍0
2拍1
否则-连接
我们可以写下所有可能组合的表格:
computer |player |computer - player | mod 3 | winner
-----------------------------------------------------
0 | 0 | 0 | 0 | tie
0 | 1 | -1 | 2 | player
0 | 2 | -2 | 1 | comp
1 | 0 | 1 | 1 | comp
1 | 1 | 0 | 0 | tie
1 | 2 | -1 | 2 | player
2 | 0 | 2 | 2 | player
2 | 1 | 1 | 1 | comp
2 | 2 | 0 | 0 | tie
在计算机获胜的所有情况下,差值comp-x
为-2或1,两者均为1模3
在玩家获胜的所有情况下,差值comp-x
为-1或2,两者均为2模3
因此,正确的逻辑是:
if (result == 0 ) {
System.out.println ("A Tie!") ;
} else if (result == 1) {
System.out.println ("comp win");
} else {
System.out.println ("you win");
}
正如Henry所更正的,Java的modulu对于负数的行为不同,因此您应该将结果的计算更改为:
result = (comp + 3 - x ) % 3 ;
谢谢
我是根据我为python rock、paper、scissor、lizard和spock游戏所做的逻辑来做这件事的。形式是(用户计算机)%5,我得到了正确的结果。为什么java中存在差异。你能解释一下吗
再次感谢。正确缩进代码。为什么要使用mod?为什么不使用if-else呢?因为Java中的-2%3==-2更好地编写测试
result=(comp-x+3)%3代码>