3

我是 Java 新手,在理解如何手动使用对象填充数组时遇到问题。我不想手动执行此操作的原因是因为我需要创建 40 个对象,其中 20 个对象去往arrayOne,其他 20 个对象去往arrayTwo。此外,每个对象都有一个独特的参数,例如需要设置的“Texas”或“Canada”。

我通常会创建一个这样的数组:

long[] arrayOne;
arrayOne = new long[20];

而不是填充它,让我们通过循环或手动说数字。但是现在我正在处理对象并且正在努力弄清楚,我尝试在 StackOverflow 上查找答案,但无法准确理解那里发生了什么。

如果有帮助,这是我的对象的构造函数

    // Plane Constructor
    public Plane (int i, String dest, String airl, String airc, double t) {

            planeID = i;
            destination = dest;
            airline = airl;
            aircraft = airc;
            time = t;

    }// END Plane Constructor
4

5 回答 5

7

我建议使用 anArrayList而不是数组,因为列表可以增长,但数组是固定大小的。但是,要回答您的问题:

Plane[] arrayOne = new Plane[20];
Plane[] arrayTwo = new Plane[20];

arrayOne[0] = new Plane(1001, "Timbuktu");
arrayOne[1] = new Plane(2930, "Siberia");
// etc.

arrayTwo[0] = new Plane(2019, "France");
arrayTwo[1] = new Plane(1222, "Italy");
// etc.

如果您使用ArrayList它,它将是:

List<Plane> arrayOne = new ArrayList<Plane>();
planes.add(new Plane(1001, "Timbuktu"));
planes.add(new Plane(2930, "Siberia"));
// etc.

或者,如果你真的很喜欢:

List<Plane> planes = new ArrayList<Plane>() {{
    add(new Plane(1001, "Timbuktu"));
    add(new Plane(2930, "Siberia"));
}};

在所有情况下,您都可以按如下方式迭代内容:

for (Plane plane : arrayOne) {
    System.out.println(plane.getDestination());
}
于 2013-11-01T10:46:13.467 回答
2
Plane[] array = new Plane[10];
array[0] = new Plane(/*specify your parameters here*/)

查看Java 语言规范的第 10 章。

于 2013-11-01T10:44:02.880 回答
1

你必须声明一个对象数组(在这种情况下Plane),就像你声明数组long-一样Plane[] arrayOne = new Plane[20];。然后您可以以相同的方式使用索引访问元素。如果您真的必须手动填充它,您应该执行以下操作:

arrayOne[0] = new Plane(1, "foo", "bar", "baz", 1.0);
arrayOne[1] = new Plane(2, "fooo", "baar", "baaz", 2.0);

只有两件事与使用Object[]数组 from不同long[]- 数组的类型以及在某些时候您必须使用构造函数来创建对象。不过,您可以使用以前创建的对象。

于 2013-11-01T10:46:23.420 回答
0

U首先创建Plane数组:

Plane[] planes = new Plane[20];

然后每个对象:

planes[0] = new Plane(...);

...

于 2013-11-01T10:43:56.480 回答
0

如果您interface的元素array不一定是Plane.

例如:

包装测试;

public class Main {
    public static void main(String[] args) {
        Flyer[] flyers = new Flyer[] { new Plane(), new Bird() };
            for (Flyer f: flyers) {
                // you can only access method "fly" here, because it's the only
                // method defined in your interface, but nothing
                // stops you from adding more methods, as long as you implement 
                // them in the (non-abstract) classes
                f.fly();
            }
    }
}

class Plane implements Flyer {
    // TODO id, destination, airline, etc. getters/setters
    @Override
    public void fly() {
        System.out.println("Weeee I'm flying!");
    }
}

class Bird implements Flyer {
    // TODO whatever properties / getters / setters
    @Override
    public void fly() {
        System.out.println("Chirp chirp");
    }
}

interface Flyer {
    void fly();
}

输出:

Weeee I'm flying!
Chirp chirp
于 2013-11-01T10:48:54.713 回答