2014-02-27 44 views
1

我有一個模擬遊戲的井字遊戲的問題。我使用一個二維數組來表示遊戲板,並按如下所示進行了實例化。它需要我使用一個char類型的數組。我意識到我不應該指定每個索引都是null,因爲這是char的默認值,但我想我會試一試。字符數組索引不接受

public TicTacToe2D() 
{ 
    board = new char[3][3]; 

    for(int i = 0; i < board.length; i++) 
    { 
     for(int j = 0; j < board[i].length; j++) 
     { 
      board[j] = null; 
     } 

     board[i] = null; 
    }   
} 

在這裏,雖然我一直在使用「」我的陣列初始值未遂我檢查優勝條件,看是否索引彼此相等,而不是null(默認值)。在這種情況下,我得到了錯誤:「不兼容的類型:字符不能轉換成char []」

public char isWin() 
{ 
    //Check for row wins 
    if (board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][0] != null) 
     return true; 

    if (board[1][0]==board[1][1] && board[1][1]==board[1][2] && board[1][0] != null) 
     return true; 

    if (board[2][0]==board[2][1] && board[2][1]==board[2][2] && board[2][0] != null) 
     return true; 

    //Check for column wins 
    if (board[0][0]==board[1][0] && board[1][0]==board[2][0] && board[0][0] != null) 
     return true; 

    if (board[0][1]==board[1][1] && board[1][1]==board[2][1] && board[0][1] != null) 
     return true; 

    if (board[0][2]==board[1][2] && board[1][2]==board[2][2] && board[0][2] != null) 
     return true; 

    //Check for diagonal wins 
    if (board[0][0]==board[1][1] && board[1][1]==board[2][2] && board[0][0] != null) 
     return true; 

    if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[2][0] != 0) 
     return true; 
    else return false; 
} 

當檢查,如果索引爲null,我得到的錯誤「無法比擬的類型:char和」 任何幫助將非常感謝!

+0

Char是原始類型,所以它不能爲null,默認情況下它是''\ u0000'',它是0. –

+0

此外你在這裏做的是'board [j] = null;'是你設置每個「行「你的數組爲null! –

回答

1

數據類型char是原始的,所以它不能是null。但默認值爲空字符,\0(或\u0000)。 JLS Section 4.12.5給出了默認值:

  • For type char, the default value is the null character, that is, '\u0000'.

嘗試比較\0\u0000代替null

+0

謝謝!與空字符比較解決了問題。 – user3362160

0

char不是一個對象,它是一個原始類型。

這意味着char類似於整數或float或Boolean,它們具有固定長度並且其初始值爲(或false)。

據我所知char是一個8位,但我可能是錯的。所有這一切,你可以比較一個字母的字符,例如:'a'或實際的數字,例如01

0

board被宣佈爲char[][]。這是一個char數組的數組。所以board[i]是一個char數組(你的棋盤的一排)。而board[i][j]是一個char(你的棋盤單元格的值)。

這樣的二維數組的每個單元格的默認值是0.不爲空。基元類型不能爲空。