Как вернуть ArrayList объектов - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть ArrayList в классе Room, который содержит объект Character.Я хочу иметь возможность распечатать описание, которое даст список персонажей в комнате.Я создал метод toString в классе символов, который будет возвращать имена символов, но не может заставить его работать из класса Room.Я довольно новичок в программировании и все еще использую массивы, любая помощь будет оценена!

Вот метод addCharacter, который добавляет символ в массив номеров.

 public void addCharacter(Character c)
{
    assert c != null : "Room.addCharacter has null character";
    charInRoom++;
    charList.add(c); 
    System.out.println(charList);

    // TO DO
}

Воткласс getLongDescription (), который я использую для печати списка символов в комнате.(Это метод, с которым у меня проблемы).

public String getLongDescription()
{
    return "You are " + description + ".\n" + getExitString() 
    + "\n" + charList[].Character.toString;  // TO EXTEND
}

А вот метод toString в классе Character.Этот метод работает.

public String toString()
{
    //If not null (the character has an item), character 
    //and item description will be printed.
    if(charItem != null){
        return charDescription +" having the item " + charItem.toString();
    }
    //Otherwise just print character description.
    else {
        return charDescription;
    }

}

1 Ответ

0 голосов
/ 19 февраля 2019

Поскольку вы используете List<Character> и уже внедрили свой пользовательский метод toString, вы можете просто вызвать characters.toString().

public String getLongDescription() {
    return "You are " + description + ".\n" + getExitString() 
    + "\n" + characters; // toString implicitly called.
}

Метод ArrayList#toString просто вызовет каждыйtoString.

public String toString() {
    Iterator<E> it = iterator();
    if (! it.hasNext())
        return "[]";
    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        E e = it.next();                                 // Get the element
        sb.append(e == this ? "(this Collection)" : e);  // Implicit call to toString
        if (! it.hasNext())
            return sb.append(']').toString();
        sb.append(',').append(' ');
    }
}
элемента
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...