为什么这个循环永远持续下去?

问题描述 投票:-4回答:5

这是我的代码

这里我做了一个循环,当x的值等于随机数时应该会中断

public class Bark {
public static void main(String[] args) {
    for (double x = 0 ; x>-1 ; x++) {
        System.out.print(x + " ");
        if( x == Math.random()) {
            break;
        }
    }
}}
java for-loop
5个回答
5
投票

循环以1为增量从0循环到无穷大,并且Math.random只能等于0.0到1的值。如果Math.random()在第一次迭代中不等于0或1,则循环将永远进行下去。


1
投票

您每次都生成一个新的随机数。要破解,最好在范围内一次生成随机数,然后循环遍历。


1
投票

for计数器x0开始,并且每次迭代(x++)递增,并一直持续到x> -1为止。当循环开始并继续增加时,x大于-1,因此>-1始终如此,因此永远持续下去。

另一个检查是Math.random,尽管Math.random确实返回了0到1之间的数字,但在第一次迭代中返回01的可能性很小。


0
投票

x以0开头,并在每个循环中递增,而打破循环的条件是它大于-1,这将始终为true,因为Math.random()返回的值大于0。


0
投票

条件x>-1将始终为真,并且只有当x == Math.random()为真时,才是第一次迭代,并且您可以预期,这是微不足道的机会。

© www.soinside.com 2019 - 2024. All rights reserved.