tic-tac-toe似乎无法正确编译我的方法(Java)
我正在尝试找出我的winorTie方法在这个我尝试创建的TictatcToe小游戏中到底出了什么问题。有人能帮忙吗?谢谢
package tictactoegame;
/**
*
* @author Douglas Boulden
*/
public class tictactoegame {
static int [][] gameboard;
static final int EMPTY = 0;
static final int NOUGHT = -1;
static final int CROSS = 1;
static void set (int val, int row) throws IllegalArgumentException {
int col = 0;
if (gameboard[row][col] == EMPTY)
gameboard[row][col] = val;
else throw new
IllegalArgumentException("Player already there!");
}
static void displayBoard () {
for (int[] gameboard1 : gameboard) {
System.out.print("|");
for (int c = 0; c < gameboard1.length; c++) {
switch (gameboard1[c]) {
case NOUGHT:
System.out.print("0");
break;
case CROSS:
System.out.print("X");
break;
default: //Empty
System.out.print(" ");
}
System.out.print("|");
}
System.out.println("\n------\n");
}
}
static void createBoard(int rows, int cols) {
gameboard = new int [rows] [cols];
}
static int winOrTie() {
if (gameboard [0][0] == NOUGHT && gameboard [0][-1])
return NOUGHT;
} else if (gameboard [0][0] == && CROSS) [0][1] {
return CROSS;
} else if (gameboard [0][0]== && " "()) [0][0] {
return 0;
} else {
return false;
}
/**
* @param args the command line arguments
*/ /**
* @param args the command line arguments
*/
public static void main(String[] args) {
createBoard(3,3);
int turn = 0;
int playerVal;
int outcome;
java.util.Scanner scan = new
java.util.Scanner(System.in);
do {
displayBoard();
playerVal = (turn % 2 == 0)? NOUGHT : CROSS;
if (playerVal == NOUGHT) {
System.out.println ("\n-0's turn-");
} else {
System.out.println("\n-X's turn-");
}
System.out.print("Enter row and Column:");
try {
set(playerVal, scan.nextInt());
} catch (IllegalArgumentException ex)
{System.err.println(ex);}
turn ++;
outcome = winOrTie();
} while ( outcome == -2 );
displayBoard();
switch (outcome) {
case NOUGHT:
System.out.println("0 wins!");
break;
case CROSS:
System.out.println("X wins!");
break;
case 0:
System.out.println("Tie.");
break;
}
}
}
# 1 楼答案
评论中提到了其中一些,但这些条件根本没有意义:
例如,你认为
if (gameboard [0][0] == && CROSS) [0][1]
应该做什么?" "()
到底应该是什么?你认为== &&
有什么作用?很难确切地知道你到底想在这里实现什么也可以考虑^ {CD4}}。这里有两个问题。首先,您确实意识到-1在Java中实际上不是一个有效的数组索引,对吗?(这在Python中是允许的,但在Java中是不允许的)。而且,
gameboard [0][-1]
是一个整数,不是布尔,所以&& gameboard [0][-1]
没有意义。如果您有类似A && B
的东西,那么A
和B
必须计算为某种布尔值(即true
或false
)另外,我鼓励你不要像这里那样做缩进。我建议将“其他如果”放在各自的行中