0

文字列とフライトのハッシュマップを使用して、planeStoreというフライトストアを作成します。そこで、ハッシュマップを使って別のストア(航空会社のストア)を作成しました。私はplaneStoreをAirlineStoreに入れました。しかし、飛行機で航空会社を印刷することはできません。

文字列airlineNameをAirlinesconstrcutorに入れて考えました。そして、Airlineairline = new Airline( "PlaneName");を作成するときに"PlaneName"を渡します。これは機能しますが、機能しません。

これが私のコードです:

航空会社

import java.util.HashMap;


public class Airline 
{
    private String airlineName;
    private HashMap<String, PlaneStore> map;

    public Airline(String airlineName)
    {
        this.airlineName = "";
        map = new HashMap<String, PlaneStore>();
    }
    public void add(PlaneStore plane)
    {
        map.put(airlineName, plane);
    }
    public void remove(String flight)
    {
        map.remove(flight);
    }
    public void printPlane()
    {
        System.out.println("\n********Flight List********");
        for (PlaneStore plane: map.values()) {
             //System.out.println(plane);
            // class
            // or:
            System.out.println(airlineName);
            System.out.println(plane.toString());

        }

    }

}

plain.toStringは、PlaneStoreのtoStringです。

public String toString() {
        return "PlaneStore [airlineName=" + airlineName + ", planeMap="
                + planeMap + "]";
    }

MainApp

import java.util.Scanner;


public class MainApp 
{
    private Scanner keyboard = new Scanner(System.in);
    public static void main(String[] args)
    {
        new MainApp().start();  
    }

    public void start()
    {
        Airline airline1 = new Airline("AerLingus");
        Airline airline2 = new Airline("Ryan Air");
        PlaneStore planeStore = new PlaneStore("Aer Lingus");
        PlaneStore planeStore2 = new PlaneStore("Ryan Air");

        Flight p1 = new Flight("Aer Lingus","A01", 150.5, 10.5, 500, Flight.AIRPLANETYPE.AIRBUS);
        Flight p2 = new Flight("Aer Lingus","B01", 50.3, 1.5, 91, Flight.AIRPLANETYPE.CORPORATE);
        Flight p3 = new Flight("Aer Lingus","C01", 12.2, -3.1, 56, Flight.AIRPLANETYPE.AIRBUS);


        Flight p4 = new Flight("Ryan Air","D01", 10.5, 1.5, 430, Flight.AIRPLANETYPE.PRIVATE);
        Flight p5 = new Flight("Ryan Air","E01", 0.3, 2.1, 101, Flight.AIRPLANETYPE.CORPORATE);
        Flight p6 = new Flight("Ryan Air","F01", 2.2, -3, 291, Flight.AIRPLANETYPE.AIRBUS);
        planeStore.add(p1);
        planeStore.add(p2);
        planeStore.add(p3);
        planeStore.print();

        airline1.add(planeStore);
        airline1.add(planeStore);
        airline1.add(planeStore);
        airline1.printPlane();

        planeStore2.add(p4);
        planeStore2.add(p5);
        planeStore2.add(p6);

        airline2.add(planeStore2);
        airline2.add(planeStore2);
        airline2.add(planeStore2);
        airline2.printPlane();



    }

}
4

3 に答える 3

1

コンストラクターを介して渡した文字列ではなく、airlineNameを""に設定しています。

于 2012-12-10T22:13:55.470 に答える
1

Airlineコンストラクターは引数を受け取りますが、クラスAirlineStringのインスタンス変数をこの引数に割り当てていません。「」に設定してairlineNameいるだけです。airlineName

public Airline(String airlineName)
    {
        this.airlineName = "";
        map = new HashMap<String, PlaneStore>();
    }

もしかして:

public Airline(String airlineName)
        {
            this.airlineName = airlineName;
            map = new HashMap<String, PlaneStore>();
        }

コードをさらに見ると、各Airlineクラスにはがありmapますが、値とともにこのマップにキーを追加するだけであるように見えますPlaneStoremapしたがって、各Airlineクラスのそれぞれに2つ以上のキーが存在することはないようです。したがって、を使用しても意味がありません。map代わりにを使用できますArrayList

私があなたの目的を正しく理解していれば、AirLineクラスを次のように単純化できます。

public class Airline 
{
    private String airlineName;                // Name of the company
    private ArrayList <PlaneStore> planeStore;

    public Airline(String airlineName)
    {
        this.airlineName = airlineName;
        map = new ArrayList<PlaneStore>();
    }
    public void add(PlaneStore plane){ planeStore.add(plane);}


    public void printPlane()
    {

        System.out.println(airlineName);
        System.out.println("\n********Flight List********");
        for (PlaneStore plane: planeStore)
        {
            System.out.println(plane.toString());
        }

    }

}

于 2012-12-10T22:14:34.160 に答える
0

読むためにコードを変更したらthis.airlineName = airlineName;、この部分で大丈夫なはずです。

ちなみに、追加するすべての飛行機に同じキーを使用しているように見えます。これにより、最後に追加した平面が常に新しい平面で上書きされます。すべての平面を印刷できるようにする場合は、それぞれに一意のキーを与える必要があります。そうしないと、これは機能しません。

于 2012-12-10T22:16:50.823 に答える