gpt4 book ai didi

java - 将项目添加到 arraylist 不会添加它?

转载 作者:行者123 更新时间:2023-12-01 19:37:46 24 4
gpt4 key购买 nike

所以基本上我正在做一个小项目来娱乐。我创建了一个生物对象,并在模拟类中创建了一个生物列表。问题是,无论我如何访问列表,它都不会添加该项目。它似乎完全忽略了添加语句之后编写的所有代码。

我尝试过 setter/getter 。 Simulation.getCreatures.add(生物)。我尝试过手动访问它。 creatures.add(creature)。我尝试过添加方法。 Simulation.addCreature(生物)。这些都不起作用

这是主类的一个片段。是的,我已将其放入 main 方法中,并且之前的代码工作得很好。它很好地创造了这个生物。但它忽略了 addCreature 和 print。

(抱歉,我无法使代码格式正常工作。如果有人也能帮助我,我将不胜感激)

Creature creature = new Creature(420, 120, 120, 1);
Simulation.addCreature(creature);
System.out.println("yes");

这是我的模拟类(class)的片段。在 addCreature 部分,它甚至不打印。

private static ArrayList<Creature> creatures = new ArrayList<>();
static void addCreature(Creature creature){
System.out.println("ADDED CREATURE");
creatures.add(creature);
}

没有错误消息。预先非常感谢,希望您能指出我做错的地方。

如果您需要完整代码:https://github.com/SearchForMe/Simulation

最佳答案

正如 Nexevis 和 Abhishek Patel 所说,您应该将许多“静态”参数/方法替换为非静态。话虽如此,这并不是添加新生物时出现问题的原因。

我从 GitHub 下载了您的代码,并将以下打印输出添加到您的主类中:

    System.out.println("1");
setDebugActive(false);
System.out.println("2");
frame = new Frame();
System.out.println("3");
Simulation.setSimulationState(true);
System.out.println("4");
System.out.println("5");
Creature creature = new Creature(420, 120, 120, 1);
System.out.println("6");
Simulation.addCreature(creature);
System.out.println("yes");
System.out.println(Simulation.getCreatures().size());

我注意到只打印了 1-5 个,并且在这些打印输出之后立即出现了多个打印输出,例如:

Found food at: 63 32
New Position: 122 121
moved

由此,我发现您在 Creature 类的构造函数内部使用了 while 循环,因此构造函数永远不会返回,并且代码永远不会到达添加到 ArrayList 的位置。

您永远不应该在构造函数中使用无限 while 循环...永远...相反,我建议使用诸如 Timer 类之类的东西来安排更新。我会让计时器在模拟中调用更新函数,然后模拟在该函数中的每个生物中调用更新函数。

关于java - 将项目添加到 arraylist 不会添加它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56775879/

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