Как добавить один объект в массив - PullRequest
0 голосов
/ 17 октября 2019

Для моего проекта мне нужно добавить Существо в массив существ, созданных в комнате

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);
         } 
        }

    }
}

, когда я делаю это, он перезаписывает весь массив, что я могу сделать, чтобы добавить одинсущество в массиве?

Ответы [ 3 ]

3 голосов
/ 17 октября 2019

Используйте break оператор.

if(creatures[i] == null)
{
    creatures[i] = new Creature(creatureName);
    break;
}
1 голос
/ 17 октября 2019

Массивы имеют только фиксированный размер. Когда вы пишете new Creatures[10], это означает, что ваш массив существ содержит максимум 10 элементов.

Вы можете добавлять элементы двумя различными способами:

  1. Вы можете скопироватьмассив и сделать его больше, а затем добавить элемент
  2. Вы можете использовать ArrayList, который является классом, который автоматически делает # 1 для вас

Я бы порекомендовал ArrayList:

ArrayList :

List<Creature> creatures = new ArrayList<>();

public void addCreature(String creatureName) {
    creatures.add(new Creature(creatureName));
}
0 голосов
/ 17 октября 2019

Кажется, вы пропустите одно условие в условии if. Я думаю, это должно быть

if(current == null || current.getCreatureName() == null) {

   creatures[i] = new Creature(creatureName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...