do while循环有问题

时间:2012-12-23 22:13:05

标签: java loops while-loop do-while

我正在尝试返回一个必须在两个数字之间的随机数字,我这样做的方式是设置一个循环来检查它是否在这些数字之间,如果没有,重新卷

我遇到的问题是它永远不会脱离我的循环而我无法解决它,是因为变量没有被传递出循环来重新测试?

如果是这样,我需要做某种回归或休息吗?

代码:

int randDamRange = 0
byte DamRange = attack.getM_damageRange(); //In this case 75

//Create a random number from within the attack damage range
do
{
    Random randbetween = new Random();

    randDamRange = randbetween.nextInt(DamRange);
    randDamRange = 75; //Test Should breakout of loop           
}   
while ((randDamRange < DamMin) || (randDamRange < DamMax));

3 个答案:

答案 0 :(得分:3)

看看你的循环条件:

while ((randDamRange < 50) || (randDamRange < 115));

现在想想randDamRange是75岁。为什么 不希望它继续下去? 75小于115。

请注意,当50小于115时,您的循环条件完全等同于:

while (randDamRange < 115);

怀疑你的意思是:

while (randDamRange < 50 || randDamRange > 115)

但是如果是这样的话,在[0, 65]范围内得到一个随机数并且添加50就更简单 更简单......根本不需要循环。 (目前尚不清楚getM_damageRange()如何进入事物。)

答案 1 :(得分:2)

获得50到115之间的随机数的更简单的解决方案是获得0到65之间的随机数并添加50:

Random randbetween = new Random();
randDamRange = randbetween.nextInt(65);
randDamRange += 50;

答案 2 :(得分:0)

在您的情况下,最简单的方法是:

int randomNumber = (int)(Math.random() * 76)

一般方法是:

int randomNumber = minimalValue + (int)(Math.random() * ((maximalValue - minimalValue) + 1))