二维整型数组的元素没有被比较.而不是比较整个数组



我只是在复习我的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();
        }

您的代码似乎采取了错误的方法来解决这个问题。除非我误解了你的目的,我不认为player1player2是必要的。所有东西都应该存储在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。因此,它试图将字符的整数值与被比较的变量值进行比较。

相关内容

  • 没有找到相关文章

最新更新