Инкапсулированный в Java метод мутатора Array

У меня есть задание, которое я пытаюсь закодировать, но, к сожалению, мне это тяжело.

Я изучил Интернет и мои учебники, но, похоже, не могу найти пример этого конкретного затруднения.

По сути, мне нужно написать механизм бронирования для поезда, нам дали код запуска, который мы должны использовать, и в основном выписали наши методы и включили их в соответствующие классы.

Основная проблема заключается в том, что мы должны инкапсулировать основной массив, содержащий объекты trainticket, в отдельный класс и, в основном, писать методы-мутаторы и методы доступа, любое взаимодействие с массивом необходимо, чтобы сохранить массив недоступным и безопасным для времен, когда доступ отсутствует. Т нужно.

Это класс драйвера для программы

Private static void menuAdd() 


{
       String  passName,op1,op2;
       int seatNum;
       Boolean FCOption,waiter,indicator;
       int duration;
       char fClass,wService;

   System.out.print("Please Enter a seat number :");
   seatNum = stdin.nextInt();
   stdin.nextLine();

   System.out.print("Please Enter the passenger name :");
   passName = stdin.nextLine();
   System.out.print(passName);

   System.out.print("Please Enter number of legs for this trip :");
   duration = stdin.nextInt();

   System.out.println("Would you like to consider a First Class ticket for an additional $20 per leg? :");
   System.out.print("Please enter Y/N");
   op1 = stdin.next();
   fClass =op1.charAt(0);

   stdin.nextLine();
   System.out.print("Would you like to consider a waiter service for a flat $15 Fee?");
   System.out.print("Please enter Y/N");
   op2 = stdin.next();
   wService =op2.charAt(0);


   //Now we create the ticket object

   TrainTicket ticketx = new TrainTicket(seatNum,passName,duration);

   System.out.println("This is an object test printing pax name"+ticketx.getName());

   TicketArray.add(ticketx);

}

Так что, в принципе, у меня нет проблем с написанием кода, запрашивающего различные детали у пользователя, а затем установление объекта с помощью вызова конструктора для объекта TrainTicket, когда я передаю объект в класс массива с помощью

TicketArray.add(ticketx);

eclipse говорит мне: "Невозможно сделать статическую ссылку на нестатический метод add(TrainTicket) из типа TicketArray"

Вот как выглядит класс массива

    Public class TicketArray
{
   // ..............................................
   // .. instance variables and constants go here ..
   // ..............................................
    int counter ;
    int arraySize =100 ;

   // constructor
   public TicketArray()
   {
      // ....................
      // .. implement this ..
      // ....................
       TrainTicket [] tickets =new TrainTicket[arraySize];
   }

   // add() method:
   // take the passed in TrainTicket object and attempt to store it in the
   // data structure. If the structure is full, or the seat of the given
   // TrainTicket has already been booked, the operation should return
   // false; otherwise return true.

   public boolean add(TrainTicket data)
   {
      // ....................
      // .. implement this ..
      // ....................

       tickets[counter]=data;
      // dummy return value so the skeleton compiles
      return false;
   }

Есть идеи, почему это не работает? Я был бы признателен, если бы кто-то мог объяснить, как инкапсулировать массив таким образом, я знаком с тем, как работают конструкторы и как их методы пишутся, но по какой-то причине мне трудно делать то же самое с массивом,

Заранее спасибо.

1 ответ

Проблема здесь не в методах мутатора или метода доступа, или даже в массивах, а в том, что вы не создаете экземпляр TicketArray класс, прежде чем пытаться использовать его. add(Ticket t) определяется как метод экземпляра, что означает, что вам нужно иметь экземпляр TicketArray прежде чем вы сможете добавить к нему.

попробуй это:

//create a new Ticket
TrainTicket ticketx = new TrainTicket(seatNum,passName,duration);

//create a new Ticket Array
TicketArray tarr = new TicketArray();
tarr.add(ticketx);
Другие вопросы по тегам