Char数组索引不接受

时间:2014-02-27 22:49:03

标签: java multidimensional-array null char incompatibility

我遇到了Tic Tac toe模拟游戏的问题。我正在使用二维数组来表示播放板,并将其实例化如下。我需要使用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;
    }         
}

这里我正在检查win条件,看看索引是否彼此相等而不是null(默认值),尽管我已经尝试使用''作为我的数组初始值。在那种情况下,我收到错误:“不兼容的类型:char无法转换为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和” 任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

数据类型char是原始的,因此它不能是null。但默认值为null 字符\0(或\u0000)。 JLS Section 4.12.5提供默认值:

  
      
  • 对于char类型,默认值为空字符,即'\ u0000'。
  •   

尝试将其与\0\u0000进行比较,而不是null

答案 1 :(得分:0)

char不是对象,它是原始类型。

这意味着char就像一个整数,浮点数或布尔值,它具有固定长度且其初始值(或false)。

据我记得char是8bit,但我可能错了。说了这么多,您可以将字母与字母进行比较,例如:'a'或实际数字,例如01

答案 2 :(得分:0)

board被声明为char[][]。因此它是一个char数组的数组。所以board[i]是一个char数组(你的董事会的一行)。 board[i][j]是一个char(你董事会的一个单元格的值)。

此类2D数组的每个单元格的默认值为0.不为null。基本类型不能为空。