Java 我的设置方法是';件';在Tictaoe中,游戏不起作用

Java 我的设置方法是';件';在Tictaoe中,游戏不起作用,java,tic-tac-toe,Java,Tic Tac Toe,在main方法中调用方法setPiece(intx,inty,char-piece)时,我希望用参数中给出的字符填充电路板,但由于某些原因,在调用方法后打印电路板时,我没有得到预期的结果 public class TicTacToe { private char[][] board; public TicTacToe() { board = new char[3][3]; for (int r = 0; r < 3; r++) { for (int

在main方法中调用方法setPiece(intx,inty,char-piece)时,我希望用参数中给出的字符填充电路板,但由于某些原因,在调用方法后打印电路板时,我没有得到预期的结果

public class TicTacToe {
    private char[][] board;

public TicTacToe() {
    board = new char[3][3];
    for (int r = 0; r < 3; r++) {
        for (int c = 0; c < 3; c++) {
            board[r][c] = ' ';
        }
    }

}

public void setPiece(int x, int y, char piece){
    board[x][y] = piece;

}


public String toString(){
    String result = "";
    for (int r = 0; r < 3; r++) {
        for (int c = 0; c < 3; c++) {
            board[r][c] = ' ';      
            System.out.print(board[r][c] + " | ");
        }
        System.out.println();

    }
    return result;
}


public static void main(String[] args) {
    TicTacToe board = new TicTacToe();  
    board.setPiece(1, 2, 'x');
    System.out.println(board); //I am expecting here the board to be filled with 'x', but it won't work so. 

}
公共类TicTacToe{
私人char[][]董事会;
公共交通{
board=新字符[3][3];
对于(int r=0;r<3;r++){
对于(int c=0;c<3;c++){
董事会[r][c]='';
}
}
}
公共无效设置块(整数x,整数y,字符块){
板[x][y]=件;
}
公共字符串toString(){
字符串结果=”;
对于(int r=0;r<3;r++){
对于(int c=0;c<3;c++){
董事会[r][c]='';
系统输出打印(板[r][c]+“|”);
}
System.out.println();
}
返回结果;
}
公共静态void main(字符串[]args){
Tictaoe板=新的Tictaoe();
板。设定件(1,2,'x');
System.out.println(board);//我希望在这里用“x”填充board,但它不起作用。
}
}


我做错了什么?我应该如何重写我的方法以获得我想要的结果?

toString
board[r][c]='';这是错误的

public String toString() {
    String result = "";
    for (int r = 0; r < 3; r++) {
        for (int c = 0; c < 3; c++) {
            System.out.print(board[r][c] + " | ");
        }
        System.out.println();

    }
    return result;
}
公共字符串toString(){
字符串结果=”;
对于(int r=0;r<3;r++){
对于(int c=0;c<3;c++){
系统输出打印(板[r][c]+“|”);
}
System.out.println();
}
返回结果;
}

这里有两个问题:

  • 您的方法
    setPiece()
    只更改电路板中的一个正方形。如果您想更改电路板中的所有内容,则需要迭代整个电路板,但这对方法的名称和参数没有意义
  • 您的
    toString()
    方法会变异数组并将其设置回
    '
    。对于每个元素。这种行为通常是不明智的
  • 此方法输入3个值。。第三个是“炭片”

    在您的代码中,您正在将
    分配给
    板[x][y]
    。。。(首先是将2d字符分配给单个字符。)


    这里有太多的错误。

    在该行中,tostring方法将数组中的每个元素再次设置为“”,以便指定的x值发生更改
    public void setPiece(int x, int y, char piece){
        board[x][y] = piece;
    
    }