0

我试图返回一个必须在两个数字之间的随机数,我这样做的方式是设置一个循环来检查它是否在这些数字之间,如果不是,则重新滚动。

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

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

代码:

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

3 回答 3

3

看看你的循环条件:

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

现在想想randDamRange75岁。你为什么期望它继续下去?75 小于 115。

请注意,由于 50 小于 115,因此您的循环条件完全等同于:

while (randDamRange < 115);

怀疑你的意思是:

while (randDamRange < 50 || randDamRange > 115)

但如果是这样,在范围内获得一个随机数并添加 50 会简单得多......[0, 65]根本不需要循环。(目前尚不清楚getM_damageRange()事情是如何产生的。)

于 2012-12-23T22:14:28.513 回答
2

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

Random randbetween = new Random();
randDamRange = randbetween.nextInt(65);
randDamRange += 50;
于 2012-12-23T22:15:09.850 回答
0

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

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

一般的方法是:

int randomNumber = minimalValue + (int)(Math.random() * ((maximalValue - minimalValue) + 1))
于 2012-12-24T01:40:45.090 回答