正确的方法来操纵/从对象数组中获取信息

时间:2013-11-02 08:40:04

标签: java arrays object methods

我为类Plane定义了一个对象数组。像这样:

        Plane[] terminalOne = new Plane[] {
            new Plane(1, "Madrid", "Ryanair", "Airbus A300", "05.00"),
            new Plane(3, "Riga", "AirBaltic", "Boeing 737", "05.30")
            //ETC..
        };

我正在试图弄清楚如何操纵/获取此数组中的信息,例如显示对象。我试过System.out.println(terminalOne);返回[Lairport.Plane;@322ba3e4(机场是我的包裹)我不明白这意味着什么,但我认为它返回了第一个对象?我试图让它更具可读性,在我定义Plane类和对象构造函数的文件中,我添加了这个函数:

    public void displayPlane() // display plane
    { 
        System.out.println();
        System.out.print("{" + flightID + "," + destination + "," + airline + "," + aircraft + "," + time + "}");
        System.out.println();
    }

{.., .., .., .., ..}的形式显示有关对象的信息,并尝试将其作为terminalOne.displayPlane();应用于我的主文件中但是遇到编译器错误,说“找不到符号,符号:方法displayPlane(),location :变量terminalOne类型为Plane []“

我使用LinkedLists,我在一个单独的文件中定义了这些方法,以及搜索,删除等方法。我可以为数组执行类似的操作,如果是这样,那么正确的方法是什么?

2 个答案:

答案 0 :(得分:2)

terminalOne是一个数组,而不是单个平面。你可以使用:

for (Plane plane : terminalOne) {
    plane.displayPlane();
}

...但我个人会考虑在toString()覆盖Plane代替:

@Override public String toString() {
    return "{" + flightID + "," + destination + "," + airline + "," +
           aircraft + "," + time + "}";
}

然后:

for (Plane plane : terminalOne) {
    System.out.println(plane);
}

答案 1 :(得分:0)

Jon建议您使用displayPlane()实施替换toString()方法 然后你可以打电话给

System.out.println("terminalOne = " + Arrays.toString(terminalOne));

查看阵列的所有元素。

输出“连接”的结果,然后你可以这样做:

List<Plane> concatList = new ArrayList<Plane>();
Collections.addAll(concatList, terminalOne);
Collections.addAll(concatList, terminalTwo);
// add many more terminals and then print
System.out.println(concatList);

仅使用标准java库