因此,我正在尝试创建一种方法,该方法返回范围 (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);
}
关于java - 在java中只返回奇数(int)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51628861/