我试图返回一个随机数字,它必须在两个数字之间,我这样做的方式是建立一个循环来检查它是否在这些数字之间,如果不是,重新滚动
我遇到的问题是它永远不会跳出我的循环,我无法解决它,是因为变量没有被传递到循环外进行重新测试吗?
如果是,我需要做一些返回或中断吗?
代码: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))