Ошибка при попытке присвоить значения объекту очереди [Java OOP]

Итак, у меня есть это задание, которое предназначено для имитации пассажиров, ожидающих у выхода на посадку, и нам нужно создать меню с различными опциями. Для этого у нас должно быть два класса и основная программа, и все это основано на очереди. Моя проблема в том, что моя самая основная часть программы, добавление пассажиров в очередь, не работает, и при появлении запроса на отображение после добавления пассажиров она отображает следующее:

Очередь: airport.Passenger@55f96302

Игнорируя тот факт, что программа далека от завершения, вот что у меня есть на данный момент:

Основной:

 public class Airport {

    /**
     * @param args the command line arguments
     */        
    public static void main(String[] args) {
        PassengerQueue queue1= new PassengerQueue();
        Passenger[]  ArrayOfPassenger = new Passenger[20];
        Scanner input= new Scanner (System.in);
        String optionMenu;

        for (int i = 0; i < 20; i++)
            ArrayOfPassenger[i]= new Passenger();

        char letter;
        do {
            System.out.println("Enter display option [A-add passenger, V- view passenger queue, D- delete passenger from queue, S- store passengerQueue data into file, L- load passengerQueue data from file] or 'X' to stop: ");
            optionMenu = input.next();
            letter = optionMenu.charAt(0);

            switch (letter) {
                case 'A':
                    queue1.AddPassenger();
                    break;
                case 'V':
                    queue1.display();
                case 'D':                       
                    break;
                case 'S':                      
                    break;
                case 'L':                       
                    break;                       
            }

        } while (letter != 'X');    
    }
}        

Пассажирский класс:

public class Passenger {
    private String firstName;
    private String surname;
    private int secondsInQueue;
    Scanner input= new Scanner(System.in);

    /**
     *
     * @return
     */
    public String getname() {
        return firstName= " "+surname;
    }

    public void setName (String fName, String sName) {
        firstName = fName;
        surname = sName;
    }

    public Passenger () {
        firstName = "";
        surname = "";
    }
}

Класс пассажирской очереди:

public class PassengerQueue {
    Scanner input= new Scanner(System.in);
    private Passenger[] qArray =new Passenger [20];
    private int first = 0;
    private int last = 0;
    private int maxStayInQueue;
    static final int MAX_QUEUE_SIZE = 20;
    public PassengerQueue() {
    for (int i = 0;i < 20; i++)
        qArray[i]= new Passenger();
}

public void AddPassenger() {
    System.out.println("Enter passenger's First Name:");
    String FirstName = input.next();
    System.out.println("Enter passenger's surname:");
    String Surname= input.next();
    qArray[last].setName(FirstName, Surname);
    last++;
    if (last == qArray.length){
        last = 0;
    }
}

public void display() {
    System.out.println("The queue: ");
    for(int i = first; i < last; i++)
        System.out.println(qArray[i]);
}

public boolean isEmpty() {
    return first == 0;
}

public boolean isFull() {
    return last == 19;
}

}

У меня вопрос: что я здесь делаю не так, присваивая значения в queue1, и что я могу сделать, чтобы решить эту проблему? Я уже некоторое время пытаюсь понять, но понятия не имею.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
218
1

Ответы 1

Я предполагаю, что Java не знает, что такое правильное строковое представление класса Passenger. Чтобы сообщить System.out.println (), как представлять Passenger как строку, переопределите метод toString (). Итак, в классе Passenger добавьте что-то вроде:

public String toString() {
    return firstName + " " + surname;
}

Оно работает! Спасибо большое, это сводит меня с ума!

Kimera 02.04.2018 17:08

Другие вопросы по теме