2010-07-14 3 views
1

OK, disons que je ce tableau:java - tableau changement

public int[][] loadBoard(int map) { 

    if (map == 1) { return new int[][] { 
{2,2,24,24,24,24,24,1,3,0,0,0,1 }, { 
2,2,24,23,23,23,24,1,3,0,0,0,1 }, { 
1,1,24,23,23,23,24,1,3,3,3,3,1 }, { 
1,1,24,24,23,24,24,1,1,1,1,3,1 }, { 
1,1,1,1,7,1,1,1,1,1,1,3,1 }, { 
6,1,1,1,7,7,7,7,7,1,1,1,1 }, { 
6,3,3,1,3,3,3,1,7,7,7,3,1 }, { 
6,72,3,3,3,1,1,1,1,7,7,1,1 }, { 
3,3,3,3,1,1,1,1,1,1,7,1,1 } }; } } 
return board; 

et je peux l'appeler faire:

board = loadBoard(1); 

Mais ... disons que je veux changer le numéro 72 sur la carte 1 tableau (en bas à gauche dans le tableau) au nombre ... 21. Pouvez-vous faire cela?

Répondre

9
board[7][1] = 21; 

Explication: Lorsque vous traitez avec un tableau a[], a[n] références (n + 1) ième élément (en gardant à l'esprit le premier élément est a[0]

Un tableau multidimensionnel est juste un tableau de. tableaux. donc, si vous avez un tableau 2D b[][], puis b[n] références (n + 1) ième tableau.

Votre valeur 72 est dans le 8ème tableau (index 7), à la 2ème position (index 1). Par conséquent board[7][1] références qui mettent en valeur, et board[7][1] = 21 lui attribue la valeur 21.

En plus: Parfois (habituellement, même), vous ne savez pas quand vous écrivez le code qui indexe vous voulez travailler avec, (que vous voulez le faire génériquement pour toutes les cartes). Ce code trouverez toutes occurrences de 72 et les remplacer par 21:

int numToReplace = 72; 
int replacement = 21; 
//loop through each nested array 
for (int i = 0; i < board.length; i++) { 
    //loop through each element of the nested array 
    for (int j = 0; j < board[i].length; j++) { 
     if (board[i][j] == numToReplace) { 
     board[i][j] = replacement; 
     } 
    } 
} 
+0

Pouvez-vous ajouter quelques explications sur la façon dont vous avez obtenu votre réponse pour lui? –

+0

Fait, merci @SB –

+0

Merci pour cela - Je ne voulais pas que votre bonne réponse soit détournée :) –

2

Lorsque vous déclarez un tableau comme int [] [], vous utilisez deux index pour identifier une seule valeur dans le tableau à deux dimensions .

Lorsque initialisé comme

int[][] myarray = { 
{ a,b,c,d,... }, // 0 
{ a,b,c,d,... }, // 1 
{ a,b,c,d,....} // 2 
}; 

Le premier indice sélectionne l'un des tableaux imbriqués. (0, 1 ou 2) dans l'exemple. Le deuxième index sélectionne ensuite un élément du tableau imbriqué, a, b, c, d ... ci-dessus.

Les index commencent toujours à 0: myarray [0] [0] donne la valeur stockée dans le tableau 0, position a. myarray [1] [3] donne la valeur 'd' du tableau imbriqué 1.

Dans votre exemple, le nombre 72 était dans le 8ème tableau, deuxième position, en comptant les nombres naturels (à partir de 1). Mais puisque les index commencent à 0, cela devient index [7] [1]. Quelle est la réponse.

board[7][1] = 72;