【问题标题】:2d array holding objects of one class in another class二维数组在另一类中保存一个类的对象
【发布时间】:2016-04-12 19:29:11
【问题描述】:

我想创建一个包含 Cell 对象的二维数组(它在下面注释掉的块中完成的方式)。但是我不想在 Cell 类中创建这个数组,而是在 Game 类中创建这个数组。我不知道该怎么做?如果我只是把它放在游戏类中,那么我会得到一个未知类的错误。在 c++ 中包含会做,但在 java 中我很新......

public class Cell{  

    public int positionX;
    public int positionY;
    public int valueOfCell = 0;
    /*    
    Cell[][] array = new Cell[12][12];
    for (int i = 0; i < 12; i++)
    {
        for (int j = 0; j < 12; j++) {
             array[i][j] = new Cell(i, j);
        }
    }
    */

    public Cell getCell() {

    }

    public void setCell(Cell object,int Nvalue) {
        object.valueOfCell=Nvalue;
    }
}

编辑:所有类都在一个包中

【问题讨论】:

  • include 的 java 等价物是 import,但只要两个类都在同一个包中,就没有必要这样做。
  • 你是怎么编译的? IDE 还是命令行?
  • IntelliJ.现在唯一的问题似乎是 for 循环,我收到“意外令牌”错误和“未知类 i”、“预期标识符”和“不必要的分号”
  • 啊,这实际上只是一个语法错误,ItelliJ 可能找不到Cell 类,因为它没有编译。所以没有.class文件可以使用。
  • 现在 Cell 和导入一切正常,但是我在这个 for 循环中看不到任何语法错误?也许我已经盯着这段代码太久了..

标签: java arrays class


【解决方案1】:

在将 Cell 的新实例分配给数组时,int i 和 int j 在构造函数中传递,即 new Cell(i, j) 但在 Cell.java 中没有定义具有两个参数的构造函数。此外,如上所述,当返回类型声明为 Cell 类型时,getCell 方法不返回任何内容。 Cell.java 可以修改如下:

public class Cell {

public int positionX;
public int positionY;
public int valueOfCell = 0;

public Cell(int i, int j) {
    this.positionX = i;
    this.positionY = j;
}

public Cell getCell() {
    return this;
}

public void setCell(Cell object, int Nvalue) {
    object.valueOfCell = Nvalue;
}

}

此外,我会将 positionX、positionY 和 valueOfCell 声明为 private 而不是 public,并使用 getter 和 setter。

【讨论】:

    【解决方案2】:

    将 Cell 导入到 Cell.java 文件顶部的 Game 类中:

    import Cell;
    

    如果包 Game 之外的 Cell 在其中,则给它完全限定的包名。

    【讨论】:

    • 所有类都在同一个包中,但它仍然没有“看到” Cell 类
    • @anne 我在您的代码中看到有一个 getCell() 方法应该返回一个 Cell 对象,但实际上并没有这样做。尝试在该代码中返回一个 Cell 对象,看看它是否有任何作用。
    • 实际上它不像没有看到它,当涉及到这两个 for 循环时,我只是得到“意外令牌”错误,它把 int i 当作类?因为它为 i 提供了一个错误未知类
    • @anne 看看我上面的评论
    • mmm 我看到了,但在我完成该方法之前,我将首先创建一个二维对象数组(使其工作,因为现在它不想编译)然后我可以尝试从中返回 smth
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多