我有这个nextInt方法给我一个stackoverflow错误:
public int nextInt(int a){
int n = rand.nextInt(a);
return n;
}
并由以下代码行调用:
int index = rnd.nextInt(Words.size());
我知道为什么会给出错误,但我不知道如何解决。在其他程序中,我有类似的方法不会出现错误:
public int nextInt(int l, int h){
int n = rand.nextInt(h - l + 1) + l;
return n;
}
以下代码行将调用哪个代码:
System.out.println(rand.nextInt(10,20)); //prints random num between 10 and 20 inclusive
任何有用的指针都会很棒!
答案 0 :(得分:1)
首先,您还需要在该范围内定义随机对象,或者如果要定义随机对象,则将其声明为全局
您需要像htis
public int nextInt(int a){
// create random object
Random rand = new Random();
// check next int value
int n = rand.nextInt(a);
return n;
}
答案 1 :(得分:0)
根据我的说法,在以下情况下递归没有发生(实际上,方法超载的情况):
public int nextInt(int l, int h){
int n = rand.nextInt(h - l + 1) + l;
return n;
}
因为nextInt
方法具有两个参数,而在int n = rand.nextInt(h - l + 1) + l;
处您仅使用一个参数来调用nextInt
。
在第一种情况下,nextInt
方法只有一个参数,并且在此方法中,您正在使用单个参数递归调用相同的nextInt
方法。