方法中的数组引用类型

时间:2015-10-25 04:14:17

标签: java arrays oop multidimensional-array methods

我已经获得了一个项目的起始代码,但我对以下代码感到困惑,似乎无法在线找到任何示例!

public static Entity[][] read(){ ... }

如何处理此实体以向数组添加新条目,然后我该如何返回?

以下构造函数由另一个类调用。

public World() {
    aWorld = new Entity[SIZE][SIZE];
    int r;
    int c;
    for (r = 0; r < SIZE; r++) {
        for (c = 0; c < SIZE; c++) {
            aWorld[r][c] = null;
        }
    }
    aWorld = FileInitialization.read();
}

我觉得如果数组只是一个参数或类似的话会更简单:

public static int[][] read(){ ... }

更新:

目标是从方法read()中读取文件,然后根据文件中的位置将实体分配到正确的位置。但我无法分配,因为数据类型不兼容,必需是实体,但我希望能够将它设置为int,char或String。

3 个答案:

答案 0 :(得分:0)

要添加到一个对象数组,您可以完全按照基本数组(例如int s)执行操作,只需使用Entity s。因此,如果您要向aWorld添加内容,请使用

aWorld[r][c] = new Entity(...); //with provided constructor's parameters
// or
aWorld[r][c] = existing_Entity; //for an Entity variable you already have

当您完成添加后,只需返回数组aWorld

答案 1 :(得分:0)

如果FileInitialization的静态read()将返回Entity [] [],那么它本身就是一个实体数组。这意味着您不应该迭代aWorld,而是直接将返回值分配给它

aWorld = FileInitialization.read();

在read()中,使用你在构造函数中创建的for循环并添加一个新的Entity对象,如Linus所述

答案 2 :(得分:0)

好的,我想感谢你们所有人,因为我的方向正确。但我想分享我的答案,这应该是简单的,并希望将来让人们的生活更轻松。

初始化对象数组就像初始化任何其他数组一样,在这种情况下:

Entity[][] reference_name = new Entity[SIZE][SIZE];

要返回此值,只需返回引用:

return reference_name;

现在是您实际修改数组中的条目的部分。 让我们说你有类似

的东西
public static void Entity[][] read() { .. }

您需要创建一个类文件Entity.java(与传递的数组类型相同)

在这种情况下,它看起来像这样:

public class Entity {
private char appearance;

public Entity(char anAppearance) {

    appearance = anAppearance;
}

现在给这个数组一个条目做这样的事情:

reference_name[0][0] = new Entity('X');

好的,如果您想知道如何显示它,只需在实体类中添加一个访问方法。

public char getAppearance() {

    return(appearance);
}

并输出:

System.out.println(reference_name[0][0].getAppearance(); );