[英]Java: Encapsulation and array of objects
我正在用Java做井字游戏,以复习一些Java概念并练习OOP。 到目前为止,我有4个班级: Board
, Player
, Coordinate
和Game
。 我在测试Board
类时遇到问题。 电路板由一组坐标组成。 当前Board
有两种不同的构造函数。 采用单个Coordinate
的构造函数主要是出于测试目的。
Board.java
public class Board {
private Coordinate squares;
private Coordinate[] coordinateSet;
public Board(Coordinate squares) {
this.squares = squares;
}
public Board(Coordinate[] coordinateSet) {
this.coordinateSet = coordinateSet;
}
public Coordinate getSquares() {
return squares;
}
public Coordinate[] getCoordinates() {
return coordinateSet;
}
public Coordinate getCoordinate(int i) {
return coordinateSet[i];
}
}
座标
public class Coordinate {
private int x;
private int y;
private int xFlag; // 0 if available, 1 if not available
private int yFlag; // 0 if available, 1 if not available
private boolean squareAvailability;
public Coordinate(int x, int y, int xFlag, int yFlag) {
this.x = x;
this.y = y;
this.xFlag = xFlag;
this.yFlag = yFlag;
}
public int getXCoordinate() {
return x;
}
public int getYCoordinate() {
return y;
}
public int getXFlag() {
return xFlag;
}
public int getYFlag() {
return yFlag;
}
public void setXFlag() {
if(xFlag == 0) {
xFlag = 1;
} else { }
}
public void setYFlag() {
if(yFlag == 0) {
yFlag = 1;
} else { }
}
public void add(Coordinate coordinate) {
// TODO Auto-generated method stub
}
public boolean isSquareAvailable(Coordinate coordinate) {
if(coordinate.getXFlag() == 0) {
if(coordinate.getYFlag() == 0) {
squareAvailability = true;
} else {
squareAvailability = false;
}
} else {
squareAvailability = false;
}
return squareAvailability;
}
}
BoardTest.java
import edu.learning.tictactoe.Board;
import edu.learning.tictactoe.Coordinate;
public class BoardTest {
public static void main(String[] args) {
Coordinate[] coordinates = new Coordinate[9];
Coordinate coordinate = new Coordinate(0, 0, 0, 0);
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
coordinates[i + j] = new Coordinate(i, j, 0, 0);
}
}
Board board = new Board(coordinate);
System.out.println(board.getSquares().getXCoordinate());
Board board2 = new Board(coordinates);
System.out.println(board2.getCoordinates().getCoordinate(0).getXCoordinate()); // error
}
}
我在IDE的BoardTest.java
的最后一行收到错误,我Cannot invoke getCoordinate(int) on the array type Coordinate[]
。 问题是,我试图返回Coordinate
从数组对象Coordinate
的对象,这是不可能的(?)所以我怎么会返回一个Coordinate
从数组Coordinate
S'
board.getCoordinates()
返回一个数组,并且编译器错误告诉您该数组没有方法getCoordinate(int)
。
只需写
board.getCoordinate(0).getXCoordinate()
如果要通过数组访问坐标,可以编写
board.getCoordinates()[0].getXCoordinate()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.