web-dev-qa-db-fra.com

Syntaxe de création d'un tableau à deux dimensions

Considérer:

int[][] multD = new int[5][];
multD[0] = new int[10];

Est-ce ainsi que vous créez un tableau à deux dimensions avec 5 lignes et 10 colonnes?

J'ai vu ce code en ligne, mais la syntaxe n'avait pas de sens.

416
AppSensei

Essayez ce qui suit:

int[][] multi = new int[5][10];

... qui est une main courte pour quelque chose comme ceci:

int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];

Notez que chaque élément sera initialisé à la valeur par défaut pour int, 0, aussi ce qui précède est-il équivalent à:

int[][] multi = new int[][]{
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
780
oldrinb

Nous pouvons déclarer un tableau à deux dimensions et stocker directement les éléments au moment de sa déclaration en tant que:

int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};

Ici int représente des éléments de type entier stockés dans le tableau et le nom du tableau est 'marks'. int est le type de données de tous les éléments représentés entre les accolades "{" et "}" car un tableau est une collection d'éléments ayant le même type de données.

Pour revenir à notre déclaration écrite ci-dessus: chaque rangée d'éléments doit être écrite à l'intérieur des accolades. Les lignes et les éléments de chaque ligne doivent être séparés par une virgule.

Observez maintenant l’instruction suivante: vous pouvez obtenir 3 lignes et 5 colonnes. La machine virtuelle Java crée donc 3 * 5 = 15 blocs de mémoire. Ces blocs peuvent être désignés individuellement comme:

marks[0][0]  marks[0][1]  marks[0][2]  marks[0][3]  marks[0][4]
marks[1][0]  marks[1][1]  marks[1][2]  marks[1][3]  marks[1][4]
marks[2][0]  marks[2][1]  marks[2][2]  marks[2][3]  marks[2][4]


REMARQUE:
Si vous voulez stocker des éléments n, l'index de tableau commence à zéro et se termine à n-1. Une autre façon de créer un tableau à deux dimensions consiste à le déclarer d'abord, puis à lui allouer de la mémoire en utilisant un nouvel opérateur.

int marks[][];           // declare marks array
marks = new int[3][5];   // allocate memory for storing 15 elements

En combinant les deux ci-dessus, nous pouvons écrire:

int marks[][] = new int[3][5];
71
Indu Joshi

Vous pouvez les créer exactement comme d'autres l'ont mentionné. Un dernier point à ajouter: vous pouvez même créer un tableau bidimensionnel asymétrique avec chaque ligne, sans nécessairement avoir le même nombre de colonnes, comme ceci:

int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];
48
Victor Mukherjee

L'idiome le plus courant pour créer un tableau à deux dimensions avec 5 lignes et 1 colonnes est:

int[][] multD = new int[5][10];

Vous pouvez également utiliser les éléments suivants, qui sont plus similaires à ce que vous avez, bien que vous deviez initialiser explicitement chaque ligne:

int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
  multD[i] = new int[10];
}
28
João Silva

Il est également possible de le déclarer de la manière suivante. Ce n'est pas un bon design, mais ça marche.

int[] twoDimIntArray[] = new int[5][10];
10
ctomek

Essayer:

int[][] multD = new int[5][10];

Notez que dans votre code, seule la première ligne du tableau 2D est initialisée à 0. Les lignes 2 à 5 n'existent même pas. Si vous essayez de les imprimer, vous obtiendrez null pour chacun d'entre eux.

8
dcernahoschi

En Java, un tableau à deux dimensions peut être déclaré identique à un tableau à une dimension. Dans un tableau unidimensionnel, vous pouvez écrire comme

  int array[] = new int[5];

où int est un type de données, array [] est une déclaration de tableau et new array est un tableau avec ses objets à cinq index.

Comme cela, vous pouvez écrire un tableau à deux dimensions comme suit.

  int array[][];
  array = new int[3][4];

Ici, array est un type de données int. J'ai d'abord déclaré sur un tableau unidimensionnel de ces types, puis un tableau de 3 lignes et 4 colonnes est créé.

Dans votre code

int[][] multD = new int[5][];
multD[0] = new int[10];

signifie que vous avez créé un tableau à deux dimensions, avec cinq lignes. Dans la première rangée, il y a 10 colonnes. Dans Java, vous pouvez sélectionner la taille de la colonne pour chaque ligne de votre choix.

7
Zishan
int [][] twoDim = new int [5][5];

int a = (twoDim.length);//5
int b = (twoDim[0].length);//5

for(int i = 0; i < a; i++){ // 1 2 3 4 5
    for(int j = 0; j <b; j++) { // 1 2 3 4 5
        int x = (i+1)*(j+1);
        twoDim[i][j] = x;
        if (x<10) {
            System.out.print(" " + x + " ");
        } else {
            System.out.print(x + " ");
        }
    }//end of for J
    System.out.println();
}//end of for i
7
Kieran Horton
int rows = 5;
int cols = 10;

int[] multD = new int[rows * cols];

for (int r = 0; r < rows; r++)
{
  for (int c = 0; c < cols; c++)
  {
     int index = r * cols + c;
     multD[index] = index * 2;
  }
}

Prendre plaisir!

5
Albeoris

Essayez de cette façon:

int a[][] = {{1,2}, {3,4}};

int b[] = {1, 2, 3, 4};
3
Piyush Bulchandani

Ces types de tableaux sont connus sous le nom de tableaux dentelés en Java:

int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[5];

Dans ce scénario, chaque ligne du tableau contient le nombre différent de colonnes. Dans l'exemple ci-dessus, la première rangée contiendra trois colonnes, la deuxième rangée deux colonnes et la troisième rangée cinq colonnes. Vous pouvez initialiser ce tableau au moment de la compilation comme ci-dessous:

 int[][] multD = {{2, 4, 1}, {6, 8}, {7, 3, 6, 5, 1}};

Vous pouvez facilement itérer tous les éléments de votre tableau:

for (int i = 0; i<multD.length; i++) {
    for (int j = 0; j<multD[i].length; j++) {
        System.out.print(multD[i][j] + "\t");
    }
    System.out.println();
}
2
ritesh9984