麻烦做一个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));
答
看看你的循环条件:
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))
除你的实际问题的答案,请注意,每次你需要一个随机数时创建一个新的Random实例并没有得到Random算法的好处。对于整个系列的数字最好使用一个随机数。 –