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

planeName在类中创建一个访问器PlanegetName()是一种常见的样式命名法)。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 回答
0

getter 实现在这里不起作用,因为 Plane 中的代码是异步运行的。为了让 Observer 模式在这里工作,Plane 需要包装一个 Observable 的实例。然后在某个时候,需要向该 Observable 注册一个 Airport(需要实现 Observer)实例。

于 2012-04-06T21:17:34.463 回答