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

看看你的循环条件:

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

现在考虑randDamRange是75。为什么你期望它继续下去呢?75小于115。

注意,由于50小于115,所以循环条件完全等价于:

while (randDamRange < 115);

怀疑你的意思是:

while (randDamRange < 50 || randDamRange > 115)

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

要得到一个介于50和115之间的随机数,一个更简单的解决方案是得到一个介于0和65之间的随机数,然后加上50:

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

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

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

一般方法为:

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

相关内容

  • 没有找到相关文章

最新更新