Question

J'ai un problème avec un jeu simulé de Tic Tac Toe.J'utilise un tableau bidimensionnel pour représenter le plateau de jeu et je l'ai instancié comme suit.Il est nécessaire que j'utilise un tableau de type char.Je me rends compte que je ne devrais pas avoir à spécifier que chaque index est nul, car c'est la valeur par défaut pour char, mais j'ai pensé essayer.

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

Ici, je vérifie une condition de victoire, en voyant si les index sont égaux les uns aux autres et non nuls (valeur par défaut), bien que j'aie essayé d'utiliser « » pour la valeur initiale de mon tableau.Dans ce cas, j'ai eu l'erreur :"personne imcompatible:char ne peut pas être converti en 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;
}

Lorsque je vérifie si un index est nul, j'obtiens l'erreur "types incomparables :char et » Toute aide serait grandement appréciée !

Était-ce utile?

La solution

Le type de données char est primitif, donc ça ne peut pas être null.Mais la valeur par défaut est null personnage, \0 (ou \u0000). JLS Section 4.12.5 donne des valeurs par défaut :

  • Pour le type char, la valeur par défaut est le caractère nul, c'est-à-dire « \u0000 ».

Essayez de le comparer à \0 ou \u0000 au lieu de null.

Autres conseils

un char n'est pas un objet, c'est un type primitif.

cela signifie qu'un caractère est comme un entier, un flottant ou un booléen, qui a une longueur fixe et sa valeur initiale est zéro (ou fausse).

Pour autant que je me souvienne, char est un 8 bits, mais je peux me tromper.Tout cela dit, un caractère que vous pouvez comparer à une lettre, par exemple : 'a' ou avec un numéro réel, par exemple 0 ou 1.

board est déclaré comme char[][].Il s'agit donc d'un tableau de tableaux de caractères.Donc board[i] est un tableau de caractères (une ligne de votre tableau).Et board[i][j] est un char (la valeur d'une cellule de votre tableau).

La valeur par défaut de chaque cellule d'un tel tableau 2D est 0.Pas nul.Un type primitif ne peut pas être nul.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top