我正在尝试创建一个连续三次滚动2组骰子的游戏。它让用户只猜一次2-12之间的数字。如果那个猜测与他/她赢得的三个卷中的任何一个匹配,否则他/她输了。我有另一个类来显示结果,我有一个计数器,它有多少循环。如果用户正确猜到它就会出现0,否则它会出现为1.我猜测循环只是循环一次所以如果有人能指出我做错了什么就这样它循环三次(并停止如果用户得到正确的答案)。
import javax.swing.JOptionPane;
/**
* @author Marcus
*
*/
public class Dice {
int randomDieNum1;//random number generator for dice
int randomDieNum2;//random number generator for dice
private final int MINVALUE1 = 1, //minimum die value
MAXVALUE1 = 6;//maximum die value
private final int MINVALUE2 = 1, //minimum die value
MAXVALUE2 = 6;//maximum die value
int userNum = Integer.parseInt(JOptionPane.showInputDialog(null, "Guess a number between 1-12", "Guess a Number",
JOptionPane.INFORMATION_MESSAGE));//gets user input
String result ; //results
int start = 0 ; //counter to see how many turns were taken
public Dice()
{
for (int i = 1 ; i <= 3; i++)
randomDieNum1 = ((int)(Math.random()* 100) % MAXVALUE1 + MINVALUE1);
randomDieNum2 = ((int)(Math.random()* 100) % MAXVALUE2 + MINVALUE2);
int total = randomDieNum1 + randomDieNum2;
if (randomDieNum1 + randomDieNum2 != userNum)
{
result = "You did not guess the \n number correctly";
++ start;
}
else if (randomDieNum1 + randomDieNum2 == userNum)
{
result = randomDieNum1 + "+" + randomDieNum2 + "=" + total + "\n" +
"You guessed the number correctly";
}
else
{
result = "You Did not guess the number correctly";
}
}
public String get() //used in another class to display count
{
String temp;
temp = "" + start;
return temp;
}
}
修改 多谢你们。我添加了两个建议并添加了一个中断来在用户得到正确答案后停止循环。 这就是它的样子:
public Dice()
{
for (int i = 1 ; i <= 3; i++)
{randomDieNum1 = ((int)(Math.random()* 100) % MAXVALUE1 + MINVALUE1);
randomDieNum2 = ((int)(Math.random()* 100) % MAXVALUE2 + MINVALUE2);
int total = randomDieNum1 + randomDieNum2;
if (randomDieNum1 + randomDieNum2 == userNum)
{result = randomDieNum1 + "+" + randomDieNum2 + "=" + total + "\n" +
"You guessed the number correctly";
++ turns; //
break; //stops the loop if condition is meet
}
else if(randomDieNum1 + randomDieNum2 != userNum)
{
result = "You did not guess the \n number correctly\n\n";
++ turns;
}
}
}
答案 0 :(得分:2)
除{
for (int i = 1 ; i <= 3; i++) {
外
您可能需要重新考虑if
条件
if(x+y != c)
{// do operation A}
else if (x+y == c)
{// do operation B}
else
之后的else-if
条件永远不会被执行。
答案 1 :(得分:1)
这不是封装循环中的所有内容
for (int i = 1 ; i <= 3; i++)
您缺少用于封装的括号
for (int i = 1 ; i <= 3; i++) {
}