Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中如何排除随机数中的数字_Java_Loops_Random_While Loop - Fatal编程技术网

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

Java中如何排除随机数中的数字,java,loops,random,while-loop,Java,Loops,Random,While Loop,所以我会得到一个介于1到9999之间的随机数,但我想排除111133344447777,这是使用while循环吗 Random r = new Random(); int x = r.nextInt(9999); while (x == 1111 || x==3333){ x = r.nextInt(9999) + 1; } 是的,在这种情况下,while意味着它将继续处理一个新的随机数,直到它与代码上的1111或3333不同 你的代码没有问题,只是一些小问题 1-确定您的就诊时

所以我会得到一个介于1到9999之间的随机数,但我想排除111133344447777,这是使用while循环吗

Random r = new Random();

int x = r.nextInt(9999);

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

是的,在这种情况下,
while
意味着它将继续处理一个新的随机数,直到它与代码上的1111或3333不同

你的代码没有问题,只是一些小问题

1-确定您的就诊时间:

while (x == 1111 || x == 3333 || x == 4444 || x == 7777)
2-方法
nextInt
处理从0(含)到给定数字的随机数,如Javadocs所述(感谢@user3437460):

返回一个伪随机、均匀分布的{@code int}值,该值从该随机数生成器的序列中提取,介于0(包含)和指定值(排除)之间

因此:


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

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

你不能在…之前声明x。。。这个代码不起作用。您需要检查
random
不清楚您在问什么!请编辑您的问题,使其包含您想要的内容?@kappa如果下面的解决方案解决了您的问题,您可以通过单击解决方案旁边的空心勾号来接受该解决方案。您将获得2个代表积分作为回报。r.nextInt(9999)将生成0-9998。你确定你的答案是正确的吗?但是当(x==1111 | | x==3333 | | x==4444 | | x==7777){x=r.nextInt(9999)}仍然有机会得到1111时,你可以使用do{…}while(..);这将删除重复的r.nextInt(9999)+1 Yes@Thierry!您应该添加您的建议作为答案!我很乐意投赞成票,因为这将是一个比我的建议更好的建议:)@user3437460是的,现在就意识到这一点!0 != 1再次感谢。@kappa
但是当(x==1111 | | x==3333 | | x==4444 | | x==7777){x=r.nextInt(9999)}
代码将起作用。您可以从1-9测试它,并排除1,3,4,7。
Random rnd = new Random();
int x=0;
do{
    x = rnd.nextInt(9999)+1;
}while(x==1111 || x==3333 || x==4444 || x==7777);