我正在用Java编写一个tic-tac-toe游戏来回顾一些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];
}
}
Coordinate.java
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
数组//Code For Generate Certificate
byte[] userCERT = (byte[])attrs.get("userCertificate").get();
ByteArrayInputStream bais = new ByteArrayInputStream( (userCERT)) ;
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(bais);
s?
答案 0 :(得分:2)
board.getCoordinates()
返回一个数组,编译器错误告诉您该数组没有方法getCoordinate(int)
。
简单写一下
board.getCoordinate(0).getXCoordinate()
如果你想通过你可以编写的数组访问坐标
board.getCoordinates()[0].getXCoordinate()