web-dev-qa-db-fra.com

Comment insérer des valeurs dans un tableau à deux dimensions par programme?

Je veux le faire dynamiquement en Java. Je sais comment insérer des valeurs dans un tableau à une dimension. Je suis un peu confus dans un tableau à deux dimensions. 

static final String shades[][] = {


 // Shades of grey
  {
    "lightgrey", 
    "dimgray", 
    "sgi gray 92", 
  },
 // Shades of blue
  {
    "dodgerblue 2", 
    "steelblue 2", 
    "powderblue", 
  },
// Shades of yellow
  {
    "yellow 1",
    "gold 1",
    "darkgoldenrod 1", 
  },
 // Shades of red
  {
    "indianred 1", 
    "firebrick 1", 
    "maroon", 
  }
};
8
vinothp
String[][] shades = new String[intSize][intSize];
 // print array in rectangular form
 for (int r=0; r<shades.length; r++) {
     for (int c=0; c<shades[r].length; c++) {
         shades[r][c]="hello";//your value
     }
 }
7
Azhar Shaikh

Essayez de coder ci-dessous,

String[][] shades = new String[4][3];
for(int i = 0; i < 4; i++)
{
  for(int y = 0; y < 3; y++)
  {
    shades[i][y] = value;
  }
}
5
mariomario

Vous ne pouvez pas "ajouter" de valeurs à un tableau car sa longueur est immuable. Vous pouvez définir des valeurs à des positions de tableau spécifiques.

Si vous savez le faire avec des tableaux unidimensionnels, vous savez comment le faire avec des tableaux n-dimensionnels: Il n’existe pas de tableaux n-dimensionnels en Java, mais uniquement des tableaux de tableaux (de tableaux ...).

Mais vous pouvez chaîner l'opérateur d'index pour l'accès aux éléments de tableau.

String[][] x = new String[2][];
x[0] = new String[1];
x[1] = new String[2];

x[0][0] = "a1";
    // No x[0][1] available
x[1][0] = "b1";
x[1][1] = "b2";

Notez que les dimensions des tableaux enfants ne doivent pas nécessairement correspondre.

1

Si vous ne savez pas à l'avance combien d'éléments vous devrez gérer, il pourrait être préférable d'utiliser des collections ( https://en.wikipedia.org/wiki/Java_collections_framework ). Il serait également possible de créer un nouveau tableau à 2 dimensions plus grand, de copier les anciennes données et d’y insérer les nouveaux éléments, mais la structure de la collection le gère automatiquement pour vous.

Dans ce cas, vous pouvez utiliser une carte de chaînes en listes de chaînes:

import Java.util.ArrayList;
import Java.util.HashMap;
import Java.util.List;
import Java.util.Map;

public class MyClass {
    public static void main(String args[]) {
        Map<String, List<String>> shades = new HashMap<>();

        ArrayList<String> shadesOfGrey = new ArrayList<>();
        shadesOfGrey.add("lightgrey");
        shadesOfGrey.add("dimgray");
        shadesOfGrey.add("sgi gray 92");

        ArrayList<String> shadesOfBlue = new ArrayList<>();
        shadesOfBlue.add("dodgerblue 2");
        shadesOfBlue.add("steelblue 2");
        shadesOfBlue.add("powderblue");

        ArrayList<String> shadesOfYellow = new ArrayList<>();
        shadesOfYellow.add("yellow 1");
        shadesOfYellow.add("gold 1");
        shadesOfYellow.add("darkgoldenrod 1");

        ArrayList<String> shadesOfRed = new ArrayList<>();
        shadesOfRed.add("indianred 1");
        shadesOfRed.add("firebrick 1");
        shadesOfRed.add("maroon 1");

        shades.put("greys", shadesOfGrey);
        shades.put("blues", shadesOfBlue);
        shades.put("yellows", shadesOfYellow);
        shades.put("reds", shadesOfRed);

        System.out.println(shades.get("greys").get(0)); // prints "lightgrey"
    }
}
0
Hemaolle

Pensez-y comme un tableau de tableau.

Si vous faites cela str [x] [y], alors il y a un tableau de longueur x où chaque élément contient à son tour un tableau de longueur y. En Java, il n'est pas nécessaire que la deuxième dimension ait la même longueur ..__ Donc, pour x = i, vous pouvez avoir y = m et x = j vous pouvez avoir y = n

Pour cela, votre déclaration ressemble à

Chaîne [] [] test = nouvelle chaîne [4] []; Test [0] = nouvelle chaîne [3]; Test [1] = nouvelle chaîne [2];

etc..

0
ejb_guy