J'écris un code de jeu. Le plateau de ce jeu est de taille 10x10. Au début, j'ai écrit ce tableau sous la forme d'un tableau d'entiers à deux dimensions. Maintenant, je dois remplacer certains endroits du tableau par des lettres. Il changera avec des lettres en fonction des coordonnées saisies par le joueur.

private static int[][] board = new int[10][10]; //board

StringBuilder sb = new StringBuilder();
    for (int[] array : board) {
        sb.append('\n').append(Arrays.toString(array));
    }
    String new = sb.toString(); //I tried to convert this way

if (new[x][y].equals("r")){
    new[x][y] = "d"; //I'm getting an error in this part.
}
-1
user13651871 31 mai 2020 à 12:05

3 réponses

Meilleure réponse

Essayez d'utiliser le tableau de chaînes 2D, en copiant les données du tableau 2D int.

int[][] board = new int[10][10]; //board

//Converting int array to String array
String[][] s = new String[board.length][];
for(int i = 0; i < board.length; i++){
    s[i] = new String[board[i].length];
    for(int j=0; j<board[i].length; j++){
        s[i][j] = Integer.toString(board[i][j]); 
    }
}

if (s[x][y].equals("r")){
    s[x][y] = "d"; 
}
0
Sreejith 31 mai 2020 à 09:55

Je vous recommande de ne pas utiliser int comme type de données de tableau. Utilisez peut-être un String, et vous pouvez utiliser Integer.parseInt(x) pour extraire un entier d'une entrée de tableau. Si vos numéros sont à un seul chiffre, utiliser char serait un meilleur choix.

Si vous voulez le faire de cette façon, vous devrez effectuer de nombreuses opérations String et vous devrez stocker l'ensemble de votre tableau en utilisant une String. Vous voudrez peut-être lire cet article pour vous aider à indexer une chaîne comme un tableau 2D.

0
Richard Yan 31 mai 2020 à 09:15

Il y a deux problèmes majeurs dans votre code:

  1. Vous avez utilisé new comme nom de la variable qui n'est pas autorisé car new est un mot réservé, utilisé pour l'instanciation.
  2. L'instruction suivante ne produit pas de tableau 2D de chaînes:

    String s = sb.toString();
    

    Par conséquent, votre tentative d'accès / set s[x][y] entraînera une erreur de compilation.

Recommandations:

  1. Utilisez un String[][] au lieu de int[][]. Un String[][] pourra stocker des chaînes composées de lettres ainsi que des entiers représentés sous forme de chaîne (que vous pouvez toujours analyser jusqu'à l'entier correspondant en utilisant Integer::parseInt si nécessaire).
  2. Créez un autre tableau de type, String[][] et copiez-y les éléments de votre tableau int[][].

    J'irais avec l'ancien.

0
Arvind Kumar Avinash 31 mai 2020 à 11:24