为了账号安全,请及时绑定邮箱和手机立即绑定

将项目添加到 arraylist 不添加它?

将项目添加到 arraylist 不添加它?

慕莱坞森 2023-02-23 10:39:18
所以基本上我正在做一个有趣的小项目。我制作了一个 Creature 对象,并在 Simulation 类中制作了一个生物列表。问题是无论我如何访问列表,它都不会添加该项目。它似乎完全忽略了添加语句之后编写的所有代码。我试过吸气剂。Simulation.getCreatures.add(creature). 我试过手动访问它。creatures.add(creature). 我试过制作一个添加方法。Simulation.addCreature(creature). 这些都不起作用这是主类的一个片段。是的,我已经把它放在主要方法中,之前的代码工作得很好。它很好地创造了这个生物。但它忽略了 addCreature 和打印。(抱歉,但我无法使代码格式正常工作。如果有人也能帮助我,我将不胜感激)Creature creature = new Creature(420, 120, 120, 1);Simulation.addCreature(creature);System.out.println("yes");这是我的模拟课的片段。在 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
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

正如 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来安排更新。我会让定时器在模拟中调用一个更新函数,然后模拟在该函数中的每个生物中调用一个更新函数。


查看完整回答
反对 回复 2023-02-23
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

正如@Nexevis 所说,您似乎在Simulation课堂上错误地使用了 static 。此外,您需要从外部访问的每个函数都应该在其前面有一个修饰符以将其设置为public. 根据 Java 文档,

如果一个类没有修饰符(默认,也称为 package-private),它只在它自己的包内可见(包被命名为相关类的组——您将在后面的课程中了解它们。)


查看完整回答
反对 回复 2023-02-23
  • 2 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信