Java:计算生成给定数字所需的时间

时间:2013-10-26 22:39:38

标签: java loops for-loop infinite-loop nested-loops

所以我试图进一步了解循环,我试图满足一个循环程序,由一个驱动程序运行。

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

 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();

所以,当然,我只是试图打印计数器,我,一旦num == lowerBound。然而,如上所述,我要么陷入无限循环(当我从i开始取极限时,在这种情况下它只是为了测试的十分之一),或者它只是完全忽略了循环,而且我我无法识别问题。

由于

3 个答案:

答案 0 :(得分: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("-------------");
}

答案 1 :(得分: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);
    }

这样,你只需要调用一次循环

答案 2 :(得分:0)

upperBound - lowerBound = 50 - 100为最新测试。 因此,您将得到介于-50到0之间的值(不包括在内),并尝试将其与100进行比较。