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

10-06 12:54