Do-while忽略了条件

时间:2015-08-17 12:14:02

标签: java

“列表”中的数字从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.现在它可以打破循环。但它似乎忽略了这个条件

2 个答案:

答案 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);

如您所见,我只是更改了列表的长度,以确保您只能输出01个数字。

输出:

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

这有用吗?