我的返回值返回错误

时间:2015-04-13 22:46:59

标签: java arrays histogram

我有一个名为RandomInt的方法,它返回一个随机数。但是,当我尝试返回该值时,它会给出一个错误,指出无法找到该变量。我也不能将它用作参数,因为当我用另一种方法调用它时,它会返回0。有什么帮助吗?

public static int randomInt(int low, int high) {
    for (int i = 0; i < 10; i++) {
        double x = Math.random();
        int e = (int) x * high / low;
     }
    return e;
}

4 个答案:

答案 0 :(得分:1)

在Java中,变量的范围由{ }个字符绑定(在Javascript中不是这种情况)。这意味着如果变量是在一组{}(大括号)中声明的,则不能在这些括号之外引用它。

您的代码就是这种情况。变量e在循环中声明,因此您不能在函数的return语句中使用它。我建议在投降之前宣布e

答案 1 :(得分:1)

在java中声明变量时,它具有一定的范围。在循环中声明变量时,只能在该循环内访问它。因为要返回的变量是在for循环中声明的,所以这就是它给出错误的原因。尝试在循环外声明一个变量,然后在for循环中访问它。您的代码将如下所示:

public static int randomInt(int low, int high) 
{
    int e = 0;

    for (int i = 0; i < 10; i++) 
    {
       double x = Math.random();
       e = (int) x * high / low;
    }
    return e;
}

答案 2 :(得分:0)

方法只能返回一个值(在您的情况下只返回一个int),但它可以是复合值(数组或对象)。在这种情况下,你最好多次循环调用你的方法,并做任何与结果有关的事情。

从技术上讲,int e的范围在循环体内部,因为它在那里被声明。下面的代码将生成10个随机数,并返回最后一个(最后一个覆盖第9个,覆盖第8个,...):

public static int randomInt(int low, int high){
    int e;
    for(int i=0;i<10;i++){
        double x=Math.random();
        e=(int)x*high/low;
    }
    return e;
}

答案 3 :(得分:-1)

您在循环中声明变量e,然后尝试从该循环外部引用它。以下应该有效:

public static int randomInt(int low, int high)
{
    int e;

    for (int i=0;i<10;i++)
    {
        double x=Math.random();
        e=(int)x*high/low;
    }

    return e;
}