首页 > 解决方案 > 有什么方法可以在 if 语句中定义整数范围?

问题描述

当我尝试在 if 语句中定义整数或尝试定义整数范围时,它会返回一条错误消息,提示“无法访问代码”

我尝试了几种不同的方法,例如将 if 语句更改为

if (rand == 33)

if (rand.nextInt == 33)

它分别返回错误消息“不兼容的操作数类型 Random 和 Int”、“nextInt 无法解析或不是字段”。

然后我尝试了

if (rand.nextInt() == 33)

然后吐回“无法访问的代码”。

对于范围问题,我尝试了 33-0, 0-33 不起作用。

    public static void main(String args[]){
    System.out.println("Random Integers:"+computeRandom());
}

    public static int computeRandom() {

    //create instance of Random class
    Random rand = new Random();

    //Generate random integers in range 0 to 100

    rand.nextInt(101); //83
    return rand.nextInt();
    if (rand.nextInt() == 33) {

    }

我希望它最终会返回字母“A”,具体取决于它在该范围打算为 0-33 时所处的范围。

标签: javaif-statementintegerrange

解决方案


您发布的代码存在多个问题,但我们可以很容易地修复它们。首先,您的main()方法目前只会显示一个值;添加一个循环 - 如果您希望看到一个字母,那么computeRandom()应该返回一个char(而不是一个int)。

public static void main(String args[]) {
    for (int i = 0; i < 10; i++) {
        System.out.println("Random Integers: " + computeRandom());
    }
}

你不应该Random在你的computeRandom方法中构造,很有可能在循环中调用它会多次计算相同的种子(所以你的随机数不会是随机的)。将其作为static字段构造一次(如此处),或将其作为参数传递给computeRandom(). 接下来,要测试范围0 - 33,您只需要测试您的值(应该保存,因为每次调用都Random.nextInt() 应该返回不同的值)小于 34(因为value在范围内0 - 100)。最后,当值不在所需范围内时,您应该返回一些东西;你想要A有效,所以我选择B了无效。喜欢,

private static final Random _RANDOM = new Random();

public static char computeRandom() {
    // Generate random integers in range 0 to 100
    int val = _RANDOM.nextInt(101);
    if (val < 34) {
        return 'A';
    }
    return 'B';
}

如果你不知道value已经有一个下界,0你会想要一个逻辑和带有if. 喜欢,

if (val >= 0 && val <= 33) {
    return 'A';
}

推荐阅读