如何在Java中排除随机数中的数字

时间:2015-11-26 17:41:31

标签: java loops random while-loop

所以我会得到一个介于1到9999之间的随机数,但我想排除1111,3333,4444,7777并且是在循环中使用吗?

Random r = new Random();

int x = r.nextInt(9999);

while (x == 1111 || x==3333){
    x = r.nextInt(9999) + 1;
} 

2 个答案:

答案 0 :(得分:2)

你的解决方案很好。您也可以使用do-while循环。这样它首先会生成一个随机数,然后检查。

Random rnd = new Random();
int x=0;
do{
    x = rnd.nextInt(9999)+1;
}while(x==1111 || x==3333 || x==4444 || x==7777);

答案 1 :(得分:0)

是的,在这种情况下,while表示它将继续处理新的随机数,直到它与您的代码中的1111或3333不同。

您的代码没有任何问题,只有小问题。

1 - 修复你的状况:

while (x == 1111 || x == 3333 || x == 4444 || x == 7777)

2 - 方法nextInt处理从0(包括)到给定数字的随机数,作为Javadocs状态(感谢@ user3437460):

  

从此随机数生成器的序列中返回一个伪随机,均匀分布的{@code int}值,介于0(含)和指定值(不包括)之间。

所以:

Random r = new Random();
int x = r.nextInt(9999)+1;
while (x == 1111 || x == 3333 || x == 4444 || x == 7777) {
    x = r.nextInt(9999) + 1;
}
System.out.println(x);