在Java中生成随机数时出错。 (包括代码和错误)

时间:2011-04-13 03:45:40

标签: java android random

我收到此代码的错误,弹出类文件编辑器:在Random.class选项卡中找不到源。我的线上出现了问题,即值= ...

我正在尝试创建一个通用方法,在我传入的两个整数之间生成一个随机数。

import java.util.Random;

public class RandomNumGen {

    int value;
    Random rand;
    public RandomNumGen() {
        rand = new Random();
    }

    public int intRandom(int min, int max) {
        value = rand.nextInt(max) + min;
        return(value);
    }

    public int choiceRandom(int first, int second, int third, int fourth) {
        int random = intRandom(1, 400);
        if (random < 100) {
            return(first);
        }else if (random > 100 && random < 200) {
            return(third);
        }else if (random > 200 && random < 300) {
            return(fourth);
        }
        return(second);
    }
}

帮助将不胜感激,

由于

1 个答案:

答案 0 :(得分:1)

“找不到源”错误是因为它试图将源打开到java.util.Random以帮助您进行调试而无法找到它。代码看起来正确,它应该执行没有错误;如果您将Random.nextInt传递给非正数,IllegalArgumentException会抛出choiceRandom(1, 2, 3, 4);,但您传递的是400.我在运行该代码段并调用intRandom <时没有任何错误/ p>

但是,从逻辑上讲,代码错误 - min不会在maxnextInt(max)之间返回一个数字。您正在拨打0,在max-1min之间返回一个数字,然后添加min,使得范围介于min+max-1和{{1}之间}。您需要返回rand.nextInt(max-min) + min

如果你只是想要一个带有一堆整数并随机返回一个整数的方法,那么更简单的实现就是:

public int choiceRandom(int... numbers) {
    return numbers[rand.nextInt(numbers.length)];
}