2014-02-12 59 views
0

當在main方法中調用方法setPiece(int x,int y,char piece)時,我希望棋盤上填充字符論點,但由於某些原因,我沒有得到我打算在打印該方法後打印該板的預期結果。我在TicTacToe遊戲'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. 

} 

}

我做了什麼錯在這裏?我應該如何重寫我的方法才能獲得我想要的結果?

回答

3

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; 
} 
+0

這是什麼意思'錯'在這裏?該行中的 – Zip

+0

tostring方法將數組中的每個元素再次設置爲「'所以分配的x值發生了變化 –

1

這裏有兩個問題:

  1. 你的方法setPiece()變化在板只有一平方。如果你想改變電路板上的所有東西,你需要迭代整個電路板 - 但這對方法的名稱和參數沒有意義。
  2. 您的toString()方法突變數組並將其重新設置爲' '。對於每個元素來說。這種行爲通常是無人看管的。
-2
public void setPiece(int x, int y, char piece){ 
    board[x][y] = piece; 

} 

此方法輸入3倍的值。第三是「焦片」

和你的代碼中,你AREE分配pieceboard[x][y] ...(這首先是分配2D字符到單個字符)。

這裏有太多錯誤。

相關問題