【问题标题】:Char array indexes not accepting字符数组索引不接受
【发布时间】:2014-03-31 16:45:37
【问题描述】:

我在玩井字游戏的模拟游戏时遇到了问题。我正在使用一个二维数组来表示棋盘,并将其实例化如下。我需要使用 char 类型的数组。我意识到我不应该指定每个索引为空,因为这是 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 无法转换为 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;
}

检查索引是否为空时,我收到错误“无法比较的类型:char 和” 任何帮助将不胜感激!

【问题讨论】:

  • Char 是原始类型,不能为空,默认为'\u0000',默认为0。
  • 另外,您在board[j] = null; 所做的是将数组的每一“行”设置为空!

标签: java multidimensional-array null char incompatibility


【解决方案1】:

数据类型char 是原始的,所以它不能是null。但默认值为空字符\0(或\u0000)。 JLS Section 4.12.5 给出默认值:

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

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

【讨论】:

  • 谢谢!比较空字符解决了这个问题。
【解决方案2】:

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

这意味着 char 类似于整数、浮点数或布尔值,具有固定长度,其初始值为 (或 false)。

据我所知,char 是 8 位的,但我可能错了。说了这么多,您可以将字符与字母进行比较,例如:'a' 或带有实际数字,例如 01

【讨论】:

    【解决方案3】:

    board 被声明为char[][]。因此,它是一个 char 数组的数组。所以board[i] 是一个字符数组(你的板的一行)。 board[i][j] 是一个字符(你的棋盘单元格的值)。

    这样一个二维数组的每个单元格的默认值为0。不为空。原始类型不能为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      相关资源
      最近更新 更多