Java随机数生成器生成相同的数,但当我比较它们时,它不相同
我对Java编程非常陌生。例如,即使我掷相同的号码,我仍然输了赌注。如果我像一个滚得很好,我仍然赢了赌注。我花了几个小时试图解决那个问题。但是我想不出来。求求你,有人,帮帮我。提前谢谢。 这是我的密码Java随机数生成器生成相同的数,但当我比较它们时,它不相同,java,Java,我对Java编程非常陌生。例如,即使我掷相同的号码,我仍然输了赌注。如果我像一个滚得很好,我仍然赢了赌注。我花了几个小时试图解决那个问题。但是我想不出来。求求你,有人,帮帮我。提前谢谢。 这是我的密码 public class Dice { private int dice; public Random number; //default constructor public Dice() { number = new Random();
public class Dice {
private int dice;
public Random number;
//default constructor
public Dice() {
number = new Random();
}
//To generate random number between 1 to 6. random starts from 0. there is no 0 on dice.
//By adding one, it will start at 1 and end at 6
}
//Method to check two dice
public boolean isequal(int dice1,int dice2) {
}
else
}
public class Playgame
{
//
}
public static void main(String[] args) {
//
}
}
{
return false;
}
}
userinput.close();
}
}
每次调用
obj1.play()
都会返回不同的值
因此,您的测试:
obj1.isEqual(obj1.play(),obj1.play())
通常不会返回true。至少有一个问题(可能还有其他问题):
打印消息时,再次调用obj1.play()
,并生成2个新的随机数。如果需要使用该值两次(一次用于比较,一次用于打印),则应将其存储在变量中
int firstRoll = obj1.play();
int secondRoll = obj1.play();
if(obj1.isequal(firstRoll, secondRoll) == true)
{
System.out.println("You rolled a " + toString(firstRoll) + " and a "
+ toString(secondRoll) );
//...
如果要生成随机数并检查两个数是否相等,则不需要dice类。尝试下面的代码,它会工作
Random random = new Random();
int n1 = random.nextInt(6) + 1;
int n2 = random.nextInt(6) + 1;
System.out.println("You rolled a " + toString(n1)+ " and a " +toString(n2));
if (n1 == n2) {
double win = betmoney * 2;
System.out.println("You win $" + win);
startmoney += win;
} else {
startmoney -= betmoney;
System.out.println("You lose $" + betmoney);
System.out.println("You left only $" + startmoney);
}
您的代码的问题是生成了两个随机数,分别是条件检查期间的1和2。在sysout语句中。你的程序只工作得很好。但由于这一点,您自己会感到困惑。每次调用ob1.play()方法时,它都会给出不同的数字 在if条款中:
if(obj1.isequal(obj1.play(), obj1.play()) == true)
将为您提供两个不同于if块中两个随机值的随机值:
System.out.println("You rolled a " + toString(obj1.play()) + " and a " + toString(obj1.play()) );
对但是当它生成相同的数字时,它仍然说false。相同吗?第一次调用
obj1.play()
返回一个数字。然后,对它的第二次调用返回一个不同的号码。他们几乎不可能是一样的!。谢谢。我在这里得到了正确的输出。我已经尝试解决这个错误2-3个小时了。但我还是解决不了,而你在不到5分钟内就解决了。谢谢lot@Vincent呵呵,别难过。我们都是初学者。很乐意帮忙。
System.out.println("You rolled a " + toString(obj1.play()) + " and a " + toString(obj1.play()) );