Convertir un index de tableau 2D en un index 1D
J'ai deux tableaux pour une variante des échecs je suis le codage en java...j'ai une version de la console, jusqu'à présent, qui représente le conseil d'administration comme un tableau 1D (taille 32), mais je suis en train de faire une interface graphique pour elle et je veux qu'il apparaisse comme un 4x8 grille, j'ai donc un tableau en 2 dimensions des JPanels...
Question est, est-il une formule qui peut convertir le tableau[i][j] index dans un tableau[i] compte tenu du fait ses un 4x8 tableau?
source d'informationauteur Becky
Vous devez vous connecter pour publier un commentaire.
Donné 4 colonnes par 8 rangs puis:
EDIT: My bad, personne ne m'a pris sur cette erreur apparemment. Mais il devrait en fait être
row * 4 + col
.row * 8 + col
serait inutile de laisser des lacunes dans les index.Pensez-y de cette façon:
Vous avez un tableau qui se trouve être une de 1 dimensions, tableau, qui en réalité, n'est qu'un long concaténation des éléments d'un tableau à deux dimensions.
Donc, disons que vous avez un tableau à deux dimensions de taille 5 x 3 (5 lignes, 3 colonnes). Et nous voulons faire un tableau unidimensionnel. Vous devez décider si vous voulez concaténer par lignes ou par colonnes, pour cet exemple, nous allons dire que la concaténation est par lignes. Par conséquent, chaque ligne est de 3 colonnes, de sorte que vous besoin de penser à votre tableau à une dimension comme défini dans la section "étapes" de 3. Donc, le long de votre un tableau multidimensionnel sera de 5 x 3 = 15, et maintenant vous devez trouver les points d'accès.
Donc, dire, vous accédez à la 2e rangée et la 2ème colonne de votre tableau à deux dimensions, puis qui finissent par être 3 étapes (première ligne) + le nombre d'étapes dans la deuxième rangée, ou 3 + 2 = 5. Puisque nous sommes de base zéro de l'indexation qui est de -1, alors que ce serait à l'indice 4.
Maintenant pour la formulation spécifique:
Alors, comme un exemple de ce qui précède, vous finirait avoir
Et qui devrait être il
Chaque ligne de ton tableau 2D est mis bout à bout dans votre tableau 1D.
i
donne la ligne qui vous êtes, etj
donne à la colonne (en ligne). donc, si vous êtes dans leith
ligne, vous devez placeri
des rangées complètes de bout en bout, puis ajouterj
plus sur pour obtenir votre seul indice de tableau.De sorte qu'il sera quelque chose comme
singleDimIndex = array[0].length * i + j
i*8+j
(en supposant que 8 est la largeur horizontale)Vous pouvez utiliser cette ArrayConvertor classe de convertir 2D tableaux dans des tableaux 1D et à l'arrière.
Attention: la Conversion d'un tableau 2D normal, on ne fait que travailler avec une matrice.
Et des tests de code:
De sortie: Égalité: vrai