我已经获得了一个项目的起始代码,但我对以下代码感到困惑,似乎无法在线找到任何示例!
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。
答案 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(); );