[英]Iterating over an ArrayList with an array
我正在使用數組迭代列表的索引。 這行代碼
score += SquareTable[index.get(i)];
產生一個錯誤,我不知道如何修復它。
@Override
public int evaluatePieceScore() {
int score = 0;
List<Piece> index = chessgame.getPieces();
for (Piece piece : this.chessgame.getPieces()){
if(piece.getColor() == Piece.YELLOW_COLOR){
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_PAWN), PawnSquareTable);
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_KNIGHT), KnightSquareTable);
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_BISHOP), BishopSquareTable);
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_ROOK), RookSquareTable);
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_QUEEN), QueenSquareTable);
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_KING), KingMiddleGameSquareTable);
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_KING), KingEndGameSquareTable);
}else if(piece.getColor() == Piece.BROWN_COLOR){
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_PAWN), reverse(PawnSquareTable));
score += this.CalculateScore(index ,getPieceValue(Piece.TYPE_KNIGHT), reverse(KnightSquareTable));
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_BISHOP), reverse(BishopSquareTable));
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_ROOK), reverse(RookSquareTable));
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_QUEEN), reverse(QueenSquareTable));
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_KING), reverse(KingMiddleGameSquareTable));
score += this.CalculateScore(index, getPieceValue(Piece.TYPE_KING), reverse(KingEndGameSquareTable));
}else{
throw new IllegalStateException("Unknown piece color found: "+piece.getColor());
}
}
return score;
}
public int CalculateScore(List<Piece> index, int pieceValue, int[] SquareTable ){
int score = pieceValue * index.size();
for(int i = 0; i < index.size(); i++){
score += SquareTable[index.get(i)];
}
return score;
}
您正在嘗試使用Piece
實例(來自 List)而不是int
來訪問SquareTable
數組。
public int CalculateScore(List<Piece> index, int pieceValue, int[] SquareTable ){
SquareTable[index.get(i)];
index.get(i) gives you an object of type `Piece`
並根據此代碼
int[] SquareTable
,
SquareTable
接受類型int
這就是給你TypeMismatchError
的原因
你在實現中搞砸了 collections 看起來像
public int CalculateScore(List<Piece> index, int pieceValue, int[] SquareTable ){
int score = pieceValue * index.size();
for(int i = 0; i < SquareTable.size(); i++){
score += getPieceValue(index.get(SquareTable[i]));
}
return score;
}
index.get(I) 為您獲取 Piece 對象,因此您不能使用它來訪問數組中的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.