У меня есть метод 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
Любые полезные указатели были бы замечательными!
Что такое rand в вашем вопросе? Пожалуйста, добавьте дополнительную информацию.
Я отредактирую его, чтобы показать, где они объявлены. rand сделает переданное значение случайным.




сначала вам нужно также определить случайный объект в этой области, или если вы определяете случайный объект, иначе объявите его глобальным
тебе нужно делать как это
public int nextInt(int a){
// create random object
Random rand = new Random();
// check next int value
int n = rand.nextInt(a);
return n;
}
Я должен подождать 5 минут, прежде чем он мне позволит.
@SeanLynch рад помочь вам и внести свой вклад в это сообщество счастливого кодирования
По моему мнению, рекурсия не происходит (на самом деле, похоже, что это случай перегрузка метода) в следующем сценарии:
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 с одним параметром.
Можете ли вы отредактировать свой вопрос, указав, где эти методы объявлены и как они вызываются? В противном случае сложно сказать, почему вы получите ошибку.