Java 如何将单个对象添加到数组中

Java 如何将单个对象添加到数组中,java,arrays,object,Java,Arrays,Object,对于我的项目,我需要将一个生物添加到房间中创建的生物数组中 public class Room { String name; String description; String state; Creature [] creatures = new Creature[10]; public Room(String roomName) { name = roomName; } public String toS

对于我的项目,我需要将一个生物添加到房间中创建的生物数组中

public class Room 
{
    String name;
    String description;
    String state;

    Creature [] creatures = new Creature[10];

    public Room(String roomName)
    {
      name = roomName;

    } 

    public String toString()
    {
       String retValue = "";
       for (int i = 0; i < creatures.length; i++) {
           retValue = retValue + creatures[i].toString();
       }
       return retValue;
    }

    public void addCreature(String creatureName)
    {    

        for (int i = 0; i < creatures.length; i++)
        {
         if(creatures[i] == null)
         {     
          creatures[i] = new Creature(creatureName);
         } 
        }

    }
}
公共教室
{
字符串名;
字符串描述;
字符串状态;
生物[]生物=新生物[10];
公共房间(字符串roomName)
{
名称=房间名称;
} 
公共字符串toString()
{
字符串retValue=“”;
for(int i=0;i

当我这样做时,它会覆盖整个阵列,我可以做些什么来向阵列中添加单个生物?

使用
break
语句

if(creatures[i] == null)
{
    creatures[i] = new Creature(creatureName);
    break;
}

数组只有固定的大小。当您编写
新生物[10]
时,这意味着您的生物数组中最多有10个元素

您可以通过两种不同的方式添加项目:

  • 您可以复制数组并使其变大,然后添加该项
  • 您可以使用
    ArrayList
    ,这是一个自动为您执行#1操作的类
  • 我推荐ArrayList:

    阵列列表

    List<Creature> creatures = new ArrayList<>();
    
    public void addCreature(String creatureName) {
        creatures.add(new Creature(creatureName));
    }
    
    List biotes=new ArrayList();
    公共无效添加生物(字符串creatureName){
    添加(新生物(creatureName));
    }
    
    似乎在if子句中遗漏了一个条件。我想应该是这样

    if(current == null || current.getCreatureName() == null) {
    
       creatures[i] = new Creature(creatureName);
    }
    

    你的意思是要附加到现有的数组中吗?@ScaryWombat是的,现在数组是空的,所以当我在man中调用这个函数时,它会将一个新生物添加到游戏中的生物数组中object@K091916编辑您的问题以显示您正在尝试的代码和您拥有的stacktrace。我不知道您的stacktrace显示的是什么,但基于您的上述代码,
    toString
    还应检查并确保
    生物[I]
    不为空。当我使用原始代码时,我的输出得到10个相同的生物。例如,我试图做的是能够添加5个生物,而不是覆盖整个阵列