0

私はコーディングしようとしているこの割り当てを持っていますが、残念ながら、それは私に苦労しています。

私はインターネットと教科書を精査しましたが、この特定の苦境の例を見つけることができないようです.

基本的に、私は列車の予約エンジンを書く必要があり、使用するスタートアップコードを与えられ、基本的にメソッドを書き出して適切なクラスにプラグインします。

主な問題は、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 は、「タイプ TicketArray から非静的メソッド add(TrainTicket) への静的参照を作成できません」と通知します。

配列クラスはこんな感じ

    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;
   }

それが機能しない理由はありますか?誰かがこの方法で配列をカプセル化する方法を説明できれば幸いです。私はコンストラクターの動作とそのメソッドの記述方法に精通していますが、何らかの理由で配列で同じことを行うのが難しいと感じています.

前もって感謝します 。

4

1 に答える 1

2

ここでの問題は、ミューテーター メソッドやアクセサー メソッド、さらには配列にあるのではなく、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);
于 2012-05-20T04:00:57.473 に答える