Java 我的返回值返回一个错误
我有一个名为RandomInt的方法,它返回一个随机数。但是,当我试图返回该值时,它会给我一个错误,说明找不到该变量。我也不能将它用作参数,因为当我在另一个方法中调用它时,它将返回Java 我的返回值返回一个错误,java,arrays,histogram,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
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;
}
公共静态int-randomInt(int-low,int-high){
对于(int i=0;i<10;i++){
double x=Math.random();
int e=(int)x*高/低;
}
返回e;
}
方法只能返回一个值(在本例中为一个int
),但它可以是复合值(数组或对象)。在这种情况下,最好让循环多次调用您的方法,并对结果执行任何需要执行的操作
从技术上讲,inte
的作用域位于循环体内部,因为它是在循环体内部声明的。以下代码将生成10个随机数,并返回最后一个(因为最后一个将覆盖第9个,而第8个将被覆盖,…):
公共静态int-randomInt(int-low,int-high){
INTE;
对于(int i=0;i您在循环内部声明变量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;
}
公共静态int-randomInt(int-low,int-high)
{
INTE;
对于Java中的(int i=0;i,变量的范围由{
}
字符绑定(在Javascript中并非如此)。这意味着如果变量是在一组{}
(花括号)中声明的,则不能在这些括号之外引用它
代码就是这样。变量e
是在循环中声明的,因此不能在函数的返回语句中使用它。我建议在lop之前声明e
。在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;
}
公共静态int-randomInt(int-low,int-high)
{
int e=0;
对于(int i=0;i<10;i++)
{
double x=Math.random();
e=(int)x*高/低;
}
返回e;
}
我不明白为什么在方法内部有循环。e的作用域限于for
循环,而返回
应该在循环外部。所以在循环外部声明int e;
。@DSlomer64我看不出这有什么用处,因为OP只会覆盖e
很多次。呵呵……很好点,@hexafrance。我只是修复了他的编译错误,而不是逻辑错误。他可能应该丢失for循环,因为他说返回了“一个随机数”。而且,(int)x
将始终为0。这只在字面意义上“不是语法错误”才有效。这对于返回0
,代码太多了。
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;
}