java - 在java中只返回奇数(int)的方法

标签 java random do-while

因此,我正在尝试创建一种方法,该方法返回范围 (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/

相关文章:

c# - C#中的随机数

c++ - rand() 在通过仿函数调用时生成相同的随机数集(即使在使用 srand(time(NULL)) 播种后)

c - 为什么我的 while 循环条件不起作用?

javascript - 组合多个 ||在做同时

java - 使用 Gradle 在 Android 项目中使用 JaCoCo

java - 如何使用java.awt.Robot发送包含大写字母和小写字母以及特殊字符的字符串?

c# - .NET 中用于生成随机数的算法是什么?

c - 调试 C 代码以计算数字长度?

java - 格式化字符串: To remove the telephone number

java - Intellij 以某种方式认为 Maven 项目打算使用 java 1.4