“列表”中的数字从1到10,随机选择2个(不等于)并显示。
myRand = rand.nextInt(list.size());
myRand1 = myRand;
do{
myRand = rand.nextInt(list.size());
} while(myRand == myRand1);
// some print
Do-While应该禁止相同的值,但不能。为什么呢?
编辑:更多信息。 列表包含1,2,3,4和5(int)。 myRand包含2例如。 现在myRand1也包含2.我不想那样。所以我把do-while用来获得另一个价值。它又是2,仍然不想要那样。所以虽然没有结束。最后,值为3.现在它可以打破循环。但它似乎忽略了这个条件
答案 0 :(得分:0)
实际上,您不应该指定myRand1 = myRand;
,check this demo working
Random rand = new Random();
int myRand = rand.nextInt(list.size());
int myRand1 = rand.nextInt(list.size());
while(myRand == myRand1){
myRand = rand.nextInt(list.size());
}
System.out.println(myRand + " - " + myRand1);
更新:我根据您的评论创建了一个新演示:
我试过了,有时仍会得到相同的数字。我只是不明白为什么。这应该是非常简单的,但结果是令人难以置信的地狱
这个新演示旨在确保数字不会重复,并且您的问题(如果仍然存在)位于代码的另一个位置。
Random rand = new Random();
int myRand = rand.nextInt(2);
int myRand1 = rand.nextInt(2);
while(myRand == myRand1){
myRand = rand.nextInt(2);
}
System.out.println(myRand + "-" + myRand1);
如您所见,我只是更改了列表的长度,以确保您只能输出0
和1
个数字。
输出:
0-1
1-0
1-0
0-1
0-1
0-1
答案 1 :(得分:-1)
myRand1 = rand.nextInt(list.size());
myRand2 = myRand1;
while (myRand1 == myRand2) {
myRand2 = rand.nextInt(list.size());
}
这有用吗?