-1

因此,我正在尝试进一步了解循环,并尝试满足由驱动程序运行的循环程序。

要满足的最终循环应该在两个给定边界之间生成一个随机数,由驱动程序给出,并且运行直到随机数等于下限。目前,我陷入了无限循环。

 public void loop4()
{
    System.out.println("Loop 4 Output, lowerBound = " + lowerBound +
                        " upperBound = " + upperBound);

    for(int i = 0;i < 10; i++){ //First loop should take 5 trys
        int num = (int) (Math.random()* (upperBound - lowerBound));
        if(num == lowerBound){
            System.out.println(i);
            break;    
        }
        else{}
    }
    System.out.println("-------------");
}

从司机那里:

loopTest.setBounds(9, 9);
    loopTest.loop4();

    loopTest.setBounds(100, 200);
    loopTest.loop4();
    loopTest.loop4();
    loopTest.loop4();

    loopTest.setBounds(100, 50);
    loopTest.loop4();

所以,当然,我只是想打印一次计数器 i,一次 num == lowerBound。但是,如上所述,我要么陷入无限循环(当我从 i 中取出限制时,在这种情况下它是 10,只是为了测试),或者它完全忽略循环,我'我无法识别问题。

谢谢

4

3 回答 3

0

upperBound - lowerBound = 50 - 100 用于最新测试。所以你会得到一个介于 -50 到 0(不包括在内)之间的值,并尝试将它与 100 进行比较。

于 2013-10-26T22:53:17.650 回答
0

我建议您使用随机库:

import java.util.Random;

public static void loop4()
{
    Random rand = new Random();
    int lowerBound = 100;
    int upperBound = 102;
    System.out.println("Loop 4 Output, lowerBound = " + lowerBound +
                        " upperBound = " + upperBound);

    for(int i = 0; i < 10; i++){
        // Next line was modified so you get values between lowerBound and upperBound
        int num = lowerBound + rand.nextInt(upperBound - lowerBound + 1); 
        System.out.println(num);
        if(num == lowerBound){
            System.out.println(i);
            break;    
        }
    }
    System.out.println("-------------");
}
于 2013-10-26T22:47:00.180 回答
0

这并不是真正解决这个问题的正确方法。由于您试图循环不确定的次数,因此调用一个方法来循环 10 次并不是解决它的最佳方法。

在这种情况下,“while”循环会更有益,例如:

    public void loop4
    {
        int num;
        int i = 0;
        while (num != lowerbound)
        {
        num = (int) (Math.random()* (upperBound - ++lowerBound));
        i++;
        }
System.out.println(i);
    }

这样,您只需调用一次循环

于 2013-10-26T22:47:35.483 回答