从对象类访问二维数组。

时间:2013-03-05 21:39:29

标签: java arrays class

在Java中,我有一个二维对象数组,但我无法访问对象类方法中的任何对象数组。我该怎么办? 这是我的班级:

class GoPiece
{
    final int boardSize = 19;
    final int empty = 0;
    final int black = 1;
    final int white = 2;
    int pieceType = empty;
    int leftRight;
    int downUp;
    int turnPlayed;
    boolean legal;
    // GoPiece's Constructor with 3 parameters.
    GoPiece(int blackOrWhite, int horizontalCoordinate, int verticalCoordinate)
    {
        pieceType = blackOrWhite;
        leftRight = horizontalCoordinate;
        downUp = verticalCoordinate;
        if ((true));
    }
    // GoPiece's Constructor with 2 parameters.
    GoPiece(int horizontalCoordinate, int verticalCoordinate)
    {
        pieceType = empty;
        leftRight = horizontalCoordinate;
        downUp = verticalCoordinate;
    }
    // GoPiece's Constructor with no parameters.
    GoPiece()
    {
        leftRight = 0;
        downUp = 0;
    }
    // Initialize an empty Go board full of GoPieces.
    GoPiece[][] InitializeBoard()
    {        
        GoPiece[][] intersection = new GoPiece[boardSize][boardSize];
        for(int horizontal = 0; horizontal < boardSize; horizontal++)
        {
            for(int vertical = 0; vertical < boardSize; vertical++)
            {
                intersection[horizontal][vertical] = new GoPiece(horizontal,vertical);
            }
        }
        return intersection;
    }

    // Make a piece a certain type: empty, black, or white.
    public void SetType(int newType)
    {
        pieceType = newType;
    }

    public int GetType()
    {
        return pieceType;
    }

    public void CheckKill()
    {
        int foobar = this.GetType();
    }
}

然后我可以在我的程序的另一部分中使用InitializeBoard()来创建一个GoPieces的二维数组......这是有效的,但我如何访问除了我引用的那些之外的所有部分GoPiece的成员职能?我尝试将整个数组传递给GoPieces函数中的一个,但这似乎没有用。

Go是一款中国古代棋盘游戏。上面的CheckKill()方法是我尝试访问数组的不同部分但失败的地方。在这里,我有一些工作的虚拟代码。

谢谢。

2 个答案:

答案 0 :(得分:2)

您需要创建一个单独的类来表示电路板本身(包括电路的当前位置)。创建董事会,测试杀人等的逻辑属于董事会,而不是单个部分。

答案 1 :(得分:1)

你的意思是你想用像InitializeBoard.GetType();这样的数组调用一个方法,其中InitializeBoard是一个二维数组吗?

你做不到。您必须指定哪个GoPiece离开InitializeBoard。示例:InitializeBoard[0][0].GetType();如果必须调用所有方法,则可以使用for循环单独调用每个方法。

相关问题