因此,我正在尝试创建一种方法,该方法返回范围(1-43)内的随机数,但仅返回奇数。我使用了do-while语句,但是程序不断返回许多数字-偶数和奇数都一样。您能否告诉我它有什么问题,所以它只会返回所请求的数字类型(取决于:%= 0/1)?
public static String generateRandomOddNumbersWithinRange(){
int randomNum = ThreadLocalRandom.current().nextInt(1, 43 + 1);
do {
return Integer.toString(randomNum);
} while (randomNum % 2 == 1);
}
最佳答案
您无条件返回。相反,您应该循环直到一个数字符合条件,然后才返回:
public static String generateRandomOddNumbersWithinRange(){
int randomNum = 0;
do {
randomNum = ThreadLocalRandom.current().nextInt(1, 43 + 1);
} while (randomNum % 2 == 0);
return Integer.toString(randomNum);
}
或者,更可靠的解决方案是将0到21之间的数字随机化,然后将其加倍并加一个:
public static String generateRandomOddNumbersWithinRange(){
return Integer.toString(ThreadLocalRandom.current().nextInt(0, 21 + 1) * 2 + 1);
}