所以我会得到一个介于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;
}
答案 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);