gpt4 book ai didi

java - StackOverflowError - Jaja

转载 作者:行者123 更新时间:2023-12-01 07:17:44 25 4
gpt4 key购买 nike

我正在尝试用Java编写一个简单的代码:我有一个名为“Bloc”的类,它创建 block (正方形),在其中创建随机宽度(largeur)和随机高度(hauteur)在 2 个整数之间,我创建随机数量的 block (nombreBloc)。我还创建了一个 ArrayList 将每个 block 放入其中,以查看还剩下多少。

所以,我做了一个名为“insererBlocList”的函数(将 block 插入到ArrayList中),它创建 block 的“nombreBloc”(numberBloc)并将其放入ArrayList中。

我有一个图形界面,其中有 1 个窗口面板,其中有 2 个其他面板:其中一个是将我创建的每个 block 放入其中。

这是我的问题,我的函数“insererBlocList”中有一个“StackOverflowError”,这意味着存在无限循环,但是在编写代码路径后,我看不出哪里出错了。 .. 这是代码:

block 类:

public class Bloc extends JPanel{
private int hauteur, largeur, nombreBloc;
private boolean premierPassage = true;
private ArrayList<Bloc> listeBlocRestant;
private Random rand = new Random();

public Bloc() {
this.hauteur = 10 + rand.nextInt(50 - 10);
this.largeur = 10 + rand.nextInt(50 - 10);
listeBlocRestant = new ArrayList<Bloc>();
if(premierPassage == true) {
this.nombreBloc = 5 + rand.nextInt(30 - 5);
insererBlocList();
}
}

public ArrayList<Bloc> insererBlocList(){
premierPassage = false;
for(int i=0; i<nombreBloc; i++) {
Bloc bloc = new Bloc();
listeBlocRestant.add(bloc);
}
return listeBlocRestant;
}

面板 block 的 GUI 部分:

    private JPanel initPanelBloc() {
panelBloc = new Bloc();
}

最佳答案

您的 Bloc 构造函数调用 insererBlocList(),并且 insererBlocList() 创建额外的 Bloc 实例(对于每个其中构造函数调用 insererBlocList()),这会导致无限的方法调用链,从而导致 StackOverflowError

insererBlocList() 可能不应该由 Bloc 构造函数调用。

关于java - StackOverflowError - Jaja,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53520040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com