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

Ron*_*120 1 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);
}
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 8

你无条件地回来了.相反,您应该循环直到数字符合条件,然后才返回它:

public static String generateRandomOddNumbersWithinRange(){

    int randomNum = 0;
    do {
        randomNum = ThreadLocalRandom.current().nextInt(1, 43 + 1);
    } while (randomNum % 2 == 0);
    return Integer.toString(randomNum);
}
Run Code Online (Sandbox Code Playgroud)

或者,更强大的解决方案可以是将0到21之间的数字随机化,然后加倍并添加一个:

public static String generateRandomOddNumbersWithinRange(){
    return Integer.toString(ThreadLocalRandom.current().nextInt(0, 21 + 1) * 2 + 1);
}
Run Code Online (Sandbox Code Playgroud)