Java随机数生成器生成相同的数,但当我比较它们时,它不相同

Java随机数生成器生成相同的数,但当我比较它们时,它不相同,java,Java,我对Java编程非常陌生。例如,即使我掷相同的号码,我仍然输了赌注。如果我像一个滚得很好,我仍然赢了赌注。我花了几个小时试图解决那个问题。但是我想不出来。求求你,有人,帮帮我。提前谢谢。 这是我的密码 public class Dice { private int dice; public Random number; //default constructor public Dice() { number = new Random();

我对Java编程非常陌生。例如,即使我掷相同的号码,我仍然输了赌注。如果我像一个滚得很好,我仍然赢了赌注。我花了几个小时试图解决那个问题。但是我想不出来。求求你,有人,帮帮我。提前谢谢。 这是我的密码

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()) );