我只是在复习我的java技能,因为我已经有一段时间没有编码了。我看了很多关于我的问题的帖子,发现我似乎在比较一切正确,就我所能说的。我比较两个2d数组元素对彼此,如果匹配我替换在元素的字符,然而,它似乎只是越界时,试图比较它们。没有看到越界错误(第48行)。
char[][] board = new char[3][3];
char[][] player1 = new char[1][1];
char[][] player2 = new char[1][1];
int playerRow = 0;
int playerCol = 0;
Scanner kbd = new Scanner(System.in);
System.out.println("Lets play a simple game of tic-tac-toe");
System.out.println("Player 1 (X's) : Please enter a row number and column number ");
System.out.println(" in order to plot the cordinates of your desired move");
playerRow = kbd.next().charAt(0);
playerCol = kbd.next().charAt(0);
for(int row = 0; row < board.length; row++)
{
for(int col = 0; col < board[row].length;col++)
{
if (board[row][col] == player1[playerRow][playerCol])
{
board[row][col] = 'X';
System.out.print(board[row][col]+" ");
}
else
{
board[row][col]= '-';
System.out.print(board[row][col]+" ");
}
}
System.out.println();
}
您的代码似乎采取了错误的方法来解决这个问题。除非我误解了你的目的,我不认为player1
或player2
是必要的。所有东西都应该存储在board
中。下面是一个示例:
//initialize variables
char[][] board = new char[3][3];
int playerRow = 0;
int playerCol = 0;
//clear the board
for(int row = 0; row < board.length; row++){
for (int col = 0; col < board[row].length; col++){
board[row][col] = '-';
}
}
Scanner kbd = new Scanner(System.in);
System.out.println("Lets play a simple game of tic-tac-toe");
System.out.println("Player 1 (X's) : Please enter a row number and column number ");
System.out.println(" in order to plot the cordinates of your desired move");
//get player's row and column
playerRow = kbd.nextInt();
playerCol = kbd.nextInt();
//Change the chosen spot to be the player's character.
board[playerRow][playerCol] = 'X';
//Display the board
for(int row = 0; row < board.length; row++){
for(int col = 0; col < board[row].length;col++){
System.out.print(board[row][col] + " ");
}
System.out.println();
}
这是一个移动的例子,让玩家选择一个位置,然后显示棋盘。
您当前获得的错误的原因是因为您读取了字符'0'
,然后尝试将其用作数组的索引。但是'0'
和0
不一样;它实际上是表示字符0
的unicode值,它恰好具有值48
,这不是数组的有效索引。您应该将该输入作为整数,然后简单地在数组中设置该值(不需要循环查找正确的位置)。
你的播放器(i)二维数组涉及到将一个字符二维数组赋值给一个整数二维数组。
char[][] player1 = new int[board.length][board.length];Char [][] player2 = new int[board.length][board.length];
我不认为这是一个可行的初始化。
正如上面的注释所提到的,你正在比较一个char和一个int。因此,它试图将字符的整数值与被比较的变量值进行比较。