Печать объектов в ArrayList - PullRequest
0 голосов
/ 26 апреля 2020

Проект требует, чтобы я создал ArrayList объектов и затем напечатал полный список. Кроме того, максимальное количество символов не может превышать 280. Созданные объекты определены в моем классе «Сообщение», а списки определены и обработаны в моем классе MessagingService. Я не могу понять, почему класс MessagingService не может вернуть полный определенный ArrayList. Это просто ничего не возвращает. Я добавил два других метода печати, чтобы проверить, успешно ли он добавлен в список.

Класс сообщения:

import java.util.Objects;

public class Message {

    private String sender;
    private String content;

    public Message(String sender, String content) {
        this.sender = sender;
        this.content = content;
    }

    public String getSender() {
        return sender;
    }

    public String getContent() {
        return content;
    }

    public String toString() {
        return this.sender + ": " + this.content;
    }

    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Message other = (Message) obj;
        if (!Objects.equals(this.sender, other.sender)) {
            return false;
        }
        if (!Objects.equals(this.content, other.content)) {
            return false;
        }
        return true;
    }

}

Класс MessagingService:

import java.util.ArrayList;

public class MessagingService {

    private ArrayList<Message> messages;

    public MessagingService() {
        this.messages = new ArrayList<>();
    }

    public void add(Message message) {
        if (message.toString().length() <= 280) {
            this.messages.add(message);
        }
    }

    public ArrayList<Message> getMessages() {
        System.out.println("For each print method:");
        for (Message message : messages) {
            System.out.println(message);
        }
        System.out.println("");

        System.out.println("Println complete list method:");
        System.out.println(this.messages);
        System.out.println("");

        System.out.println("Return print method:");
        return this.messages;
    }
}

Основной класс:

public class Main {

    public static void main(String[] args) {
        Message test1 = new Message("pieterer", "aaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbbaaaaaaaaaa1111111111bbbbbbbbbb");
        Message test2 = new Message("koos", "kaaskril");
        Message test3 = new Message("jan", "wikkelspies");
        MessagingService list = new MessagingService();
        System.out.println("");
        list.add(test1);
        list.add(test2);
        list.add(test3);
        list.getMessages();
    }
}

Ссылку на упражнение можно найти здесь: https://java-programming.mooc.fi/part-6/1-objects-within-objects

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Я нашел решение: в методе add () строка была: if (message.toString (). Length () <= 280), где она должна быть: if (message.getContent (). Length () < = 280) </p>

0 голосов
/ 26 апреля 2020

Здесь MessagingService возвращает список, но вы не печатаете его в main (). Замените строку list.getMessages () в main () на System.out.println (list.getMessages ()).

Также вы можете заменить:

public ArrayList<Message> getMessages() {
        System.out.println("For each print method:");
        for (Message message : messages) {
            System.out.println(message);
        }
        System.out.println("");

        System.out.println("Println complete list method:");
        System.out.println(this.messages);
        System.out.println("");

        System.out.println("Return print method:");
        return this.messages;
    }

с кодом ниже:

@Override
public String toString() {
    return new ReflectionToStringBuilder(this,ToStringStyle.SHORT_PREFIX_STYLE).toString();}
...