我正在尝试返回一个必须在两个数字之间的随机数字,我这样做的方式是设置一个循环来检查它是否在这些数字之间,如果没有,重新卷
我遇到的问题是它永远不会脱离我的循环而我无法解决它,是因为变量没有被传递出循环来重新测试?
如果是这样,我需要做某种回归或休息吗?
代码:
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 :(得分:3)
看看你的循环条件:
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 :(得分:2)
获得50到115之间的随机数的更简单的解决方案是获得0到65之间的随机数并添加50:
Random randbetween = new Random();
randDamRange = randbetween.nextInt(65);
randDamRange += 50;
答案 2 :(得分:0)
在您的情况下,最简单的方法是:
int randomNumber = (int)(Math.random() * 76)
一般方法是:
int randomNumber = minimalValue + (int)(Math.random() * ((maximalValue - minimalValue) + 1))