-2
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");
        PlaneStore planeStore = new PlaneStore("Aer Lingus");

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

}

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());

        }

    }

}

ねえ、私は飛行機の店を印刷したいです。飛行機の店には、文字列とフライトのハッシュマップが含まれています。そこで、flight.add/printがメインアプリに登場します。しかし、今は航空会社とフライトを並行して印刷したいので、航空会社を置いて、航空会社と一緒にplaneStoreを印刷しようとしていますが、取得するのはメモリアドレスだけです。

4

4 に答える 4

1

のようなものを取得した場合は、次のようにオーバーライドするMyClass@abcdef必要があります。toStringMyClass

public class MyClass {

    ...

    @Override
    public String toString() {
        return "My class"; // Make a string here that you want to display
    }
}

したがって、たとえば、PlaneStorehasint planeCountString nameforフィールドの場合、次のようなことができます。

@Override
public String toString() {
    return "Plane store | Name: " + name + ", planes: " + planeCount;
}
于 2012-12-10T20:23:11.680 に答える
0

あなたはそれをすることができます:

System.out.println(map.toString());

これはと同じです

System.out.println(map);

次に、あなたが言及した「メモリアドレス」を回避するために:
PlainStoreにメソッドを追加します

public String toString() {
    return this.storeName; // or similar, 
}

これが機能するのtoString()は、各キーと値のメソッドを呼び出すことで、マップがそのコンテンツを印刷できるためです。

この出力が十分でない場合は、自分で繰り返す必要があります。を使用して、map.entrySet()それを繰り返します。

于 2012-12-10T20:16:28.963 に答える
0

ApacheToStringBuilderクラスを使用してみてください。ただし、もちろんtoString()も役立ちます。ToStringBuilderの詳細

于 2012-12-10T20:20:54.073 に答える
0

あなたはプログラミングに不慣れなようですので、私はあなたに彼の答えを渡すつもりです:

public class PlaneStore {

    private String name;
    ...

    public String toString() {
        return name;
    }
}
于 2012-12-10T20:29:03.640 に答える