Итак, у меня есть это задание, которое предназначено для имитации пассажиров, ожидающих у выхода на посадку, и нам нужно создать меню с различными опциями. Для этого у нас должно быть два класса и основная программа, и все это основано на очереди. Моя проблема в том, что моя самая основная часть программы, добавление пассажиров в очередь, не работает, и при появлении запроса на отображение после добавления пассажиров она отображает следующее:
Очередь: 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, и что я могу сделать, чтобы решить эту проблему? Я уже некоторое время пытаюсь понять, но понятия не имею.




Я предполагаю, что Java не знает, что такое правильное строковое представление класса Passenger. Чтобы сообщить System.out.println (), как представлять Passenger как строку, переопределите метод toString (). Итак, в классе Passenger добавьте что-то вроде:
public String toString() {
return firstName + " " + surname;
}
Оно работает! Спасибо большое, это сводит меня с ума!