亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將項目添加到 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 關注
  • 89 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號