麻烦做一个while while循环

问题描述:

我想要返回一个随机数字必须在两个数字之间,我这样做的方式是设置一个循环来检查它是否在这些数字之间,如果不是,重新推出。麻烦做一个while 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)); 
+0

除你的实际问题的答案,请注意,每次你需要一个随机数时创建一个新的Random实例并没有得到Random算法的好处。对于整个系列的数字最好使用一个随机数。 –

看看你的循环条件:

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

当然,这是漫长的一天。谢谢。 – Springfox

更简单的解决方案,使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))