Java 如何解决堆栈溢出错误
我有一个nextInt方法,它给了我一个stackoverflow错误:Java 如何解决堆栈溢出错误,java,recursion,stack-overflow,Java,Recursion,Stack Overflow,我有一个nextInt方法,它给了我一个stackoverflow错误: public int nextInt(int a){ int n = rand.nextInt(a); return n; } 并由以下代码行调用: int index = rnd.nextInt(Words.size()); System.out.println(rand.nextInt(10,20)); //prints random num between 10 and 2
public int nextInt(int a){
int n = rand.nextInt(a);
return n;
}
并由以下代码行调用:
int index = rnd.nextInt(Words.size());
System.out.println(rand.nextInt(10,20)); //prints random num between 10 and 20 inclusive
我理解它为什么会出错,但我不知道如何修复它。我在另一个程序中有一个类似的方法,它不会给我错误:
public int nextInt(int l, int h){
int n = rand.nextInt(h - l + 1) + l;
return n;
}
这一行代码正在调用:
int index = rnd.nextInt(Words.size());
System.out.println(rand.nextInt(10,20)); //prints random num between 10 and 20 inclusive
任何有用的指针都会很好 首先,您还需要在该范围内定义随机对象,或者如果您正在定义随机对象,则需要将其声明为全局对象 你需要像htis那样做
public int nextInt(int a){
// create random object
Random rand = new Random();
// check next int value
int n = rand.nextInt(a);
return n;
}
据我所知,在下面的场景中,递归没有发生(事实上,似乎是方法重载的情况):
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
方法进行递归调用。您能否编辑您的问题以包括这些方法的声明位置和调用方式?否则就有点难说为什么会出错。你的问题中的rand
是什么?请添加更多信息。我将对其进行编辑以显示它们的声明位置rand
将使传递的值成为随机值。我必须等待5分钟,它才会允许我这样做。@SeanLynch很高兴能帮助您,并为这个委员会贡献力量