1

私は航空交通管制システムを作っており、飛行機が来るかどうかに応じて名前が呼ばれるクラス飛行機があります。飛行機が 1 台ある場合は KLM と表示され、飛行機がない場合は飛行機がないと表示されます。

この飛行機の名前を飛行機クラスから空港クラスに取得してキューに入れる方法を探しています。これは飛行機クラスのコードです

package airtrafficcontrolv3;

import java.util.TimerTask;


class Plane
        extends TimerTask
{

    public int nextPlaneLoop = 0;
    public int planes;
    public int fuel;
    public String planeName;

    @Override
    public void run()
    {
        Observer o = new ObserverImpl();
        Subject s = new SubjectImpl();

        if (nextPlaneLoop <= 167)
        {
            //Currently only running 1 or 0 planes...
            planes = (int) (Math.random() * ((2 - 1) + 1));
            //System.out.println("Random generated plane amount: " + planes);
            //System.out.println("Method called, one whole day loop");
            //Adds to the plane in the airspace loop
            nextPlaneLoop++;
            //System.out.println("Loop incrementing: " + nextPlaneLoop);

            if (planes == 0)
            {
                //System.out.println("No fuel is required as no planes are coming in");
                planeName = "No incoming plane";
                //System.out.println("Planes name is: " + planeName);

                System.out.println("Inbound amount of planes: "+planes);
                System.out.println("Inbound: " + planeName);
                System.out.println("Inbound fuel amount: None ");

                System.out.println(" ");
            }
            else
            {
                //Amount of fuel
                fuel = 30 + (int) (Math.random() * ((120 - 30) + 1));
                //System.out.println("Random fuel: " + fuel);
                planeName = "KLM AirFrance";
                System.out.println("Inbound amount of planes: "+planes);
                System.out.println("Inbound: " + planeName);
                System.out.println("Inbound fuel amount: "+fuel);

                System.out.println(" ");
            }
        }
        else
        {
            this.cancel();
            System.out.println("Day Finished");
        }

                s.addObserver(o);
                s.setState(planeName);

                System.out.println(planeName);

                //finalName = planeName;
                Airport point = new Airport();

                //System.out.println(planeName);
    }
}

これは私の空港クラスのものです。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package airtrafficcontrolv3;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Airport
{
    Plane point = new Plane();
    Queue <String> waiting = new LinkedList<String>();

    public Airport()
    {
        //waiting.add(point.);

        while (!waiting.isEmpty())
        {
            System.out.println("Waiting to take off: "+waiting);
            try
            {
                System.out.println("Preparing to taxi: "+waiting.remove());
                Thread.sleep(5000);
            }
            catch (InterruptedException ex)
            {
                Logger.getLogger(Airport.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

}

飛行機クラスから空港クラスへの名前を取得する方法を誰かが提案できる可能性はありますか.

4

4 に答える 4

0

Plane のコードは非同期で実行されているため、getter の実装はここでは機能しません。ここで Observer パターンを機能させるには、Plane で Observable のインスタンスをラップする必要があります。その後、ある時点で、Airport (Observer を実装する必要がある) インスタンスをその Observable に登録する必要があります。

于 2012-04-06T21:17:34.463 に答える
0

planeNameクラスでのアクセサーを作成しますPlane(getName()は一般的なスタイル命名法です)。Airportのインスタンスごとにクラスから呼び出しますPlane

于 2012-04-06T21:11:12.267 に答える
0

point.planeName空港クラスのコールポイントにプランのメンバーがいます。あなたが何を求めているのか正確にはわかりません...

于 2012-04-06T21:13:18.187 に答える
0

ゲッターを次のようにします

public String getName() {
    return planeName;
}

または単にアクセスする

point.planeName

どちらも機能しますが、悪いスタイルと見なされます。

于 2012-04-06T21:14:35.783 に答える