在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()方法是我尝试访问数组的不同部分但失败的地方。在这里,我有一些工作的虚拟代码。
谢谢。
答案 0 :(得分:2)
您需要创建一个单独的类来表示电路板本身(包括电路的当前位置)。创建董事会,测试杀人等的逻辑属于董事会,而不是单个部分。
答案 1 :(得分:1)
你的意思是你想用像InitializeBoard.GetType();
这样的数组调用一个方法,其中InitializeBoard是一个二维数组吗?
你做不到。您必须指定哪个GoPiece离开InitializeBoard。示例:InitializeBoard[0][0].GetType();
如果必须调用所有方法,则可以使用for循环单独调用每个方法。