2014-02-27 38 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.不为空。基元类型不能为空。