Indice de tableau en java

scfps -  
 danimo -
Bonjour, j'aimerai savoir comment sous java afficher les indices[i][j], d'une valeur stockée dans un tableau a deux dimensions, sans passer par les array list?
merci d'avance

3 réponses

  1. danimo
     
    Salut,

    elt 1 dimension 1 >> [0][0]
    elt 1 dimension 2 >> [0][1]

    elt 2 dimension 1 >> [1][0]
    elt 2 dimension 2 >> [1][1]

    elt 3 dimension 1 >> [2][0]
    elt 3 dimension 2 >> [2][1]

    etc...

    Cordialement,

    Dan
    0
    1. scfps
       
      merci damino mais je crois que je me suis mal fait comprendre , j'ai un tableau de char a deux dimensions, et je voudrai par une methode recuperer les index correspondant a un caractere du tableau afin de les renvoyer
      0
  2. danimo
     
    Ce n'est sans doute pas exactement ce que tu veux faire, mais l'exemple suivant t'aidera peut-être:

    //Supposons que nous avons un tableau de caractères (char) à 2 dimensions (monTableau)
    //et que la 1ère dimension représente les lettres a à z et la 2ème dimension celles de z à a
    char[][] monTableau = {   
    {'a', 'z'}, {'b', 'y'}, {'c', 'x'}, {'d', 'w'}, {'e', 'v'}, {'f', 'u'}, {'g', 't'},
    {'h', 's'}, {'i', 'r'}, {'j', 'q'}, {'k', 'p'}, {'l', 'o'}, {'m', 'n'}, {'n', 'm'},
    {'o', 'l'}, {'p', 'k'}, {'q', 'j'}, {'r', 'i'}, {'s', 'h'}, {'t', 'g'}, {'u', 'f'},
    {'v', 'e'}, {'w', 'd'}, {'x', 'c'}, {'y', 'b'}, {'z', 'a'},
    };
                   
    System.out.println("LISTE des deux dimensions:");
    System.out.println("1   2\n");
             
    for(int i = 0; i < monTableau.length; i++)
    {
      System.out.println(monTableau[i][0] + "   " + monTableau[i][1]);
     }
    
    //Nous voulons maintenant obtenir les indices du caractère 'r':
          	
    char chAtrouver = 'r';
    String strAtrouver = "" + chAtrouver;
    System.out.println("\nNous voulons savoir ou se trouve le char \'r\' (dimension 1) et\n"
    + "quel est le char qui lui correspond (dimension 2):\n");
    for(int i = 0; i < monTableau.length; i++)
    {
      char chLu = monTableau[i][0];
      String strLu = "" + chLu;
      if(strLu.equals(strAtrouver))
     {
       System.out.println("Le char \'r\' se trouve en [i][0] soit: [" + i + "][0] (dimension 1)");
       System.out.println("Le char se trouvant en [i][1] soit [" + i + "][1] (dimension 2) est "
      + "\'" + monTableau[i][1] + "\'.");
     }
     }
    


    Cordialement,

    Dan
    0
    1. scfps
       
      decidement je m'exprime comme un pied, c'est un tableau ayant des valeur en char et les indices sont en int.
      du style Montableau [0][0] = ' a';
      [1][0] = ' b';

      donc ma methode doit etre capable si on me donne le char 'a' , de retourner les indices [i][j] correspondant .

      je vous remercie de la peine que vous vous donnez.
      cordialement
      0
  3. danimo
     
    C'est ce qui est fait ici:

    ..............
    if(strLu.equals(strAtrouver))
     {
       System.out.println("Le char \'r\' se trouve en [i][0] soit: [" + i + "][0] (dimension 1)");
       System.out.println("Le char se trouvant en [i][1] soit [" + i + "][1] (dimension 2) est "
      + "\'" + monTableau[i][1] + "\'.");
     }
    


    On peut alors dire que pour la dimension 1 le char 'r' a pour indices [i1][j1]:

    int i1 = i; // toujours i de la boucle
    int j1 = 0; // toujours 0 puisque dimension 1

    et pour le caractère dimension 2 [i2][j2]:

    int i2 = i; // toujours i de la boucle
    int j2 = 1; // toujours 1 puisque dimension 2

    il suffit donc que la méthode retourne i1 et on en déduit les 3 autres indices (j1, i2 et j2)

    Céation du tableau au niveau classe principale (qu'on nomme à tort variable globale: c'est mieux de dire variable (ou champs) de classe

             private static char[][] monTableau = {   
                   {'a', 'z'}, {'b', 'y'}, {'c', 'x'}, {'d', 'w'}, {'e', 'v'}, {'f', 'u'},
                   {'g', 't'}, {'h', 's'}, {'i', 'r'}, {'j', 'q'}, {'k', 'p'}, {'l', 'o'},
                   {'m', 'n'}, {'n', 'm'}, {'o', 'l'}, {'p', 'k'}, {'q', 'j'}, {'r', 'i'},
                   {'s', 'h'}, {'t', 'g'}, {'u', 'f'}, {'v', 'e'}, {'w', 'd'}, {'x', 'c'},
                   {'y', 'b'}, {'z', 'a'},
                   };
    


    La méthode que je propose:
         public static int retourIndice1(char ch)
          {
             int i = 0;
             String strAtrouver = "" + ch; // conversion en String  
          
             System.out.println("\nNous voulons savoir ou se trouve le char \'r\' (dimension 1):\n");
             for(i = 0; i < monTableau.length; i++)
             {
                char chLu = monTableau[i][0];
                String strLu = "" + chLu; // conversion en String
                if(strLu.equals(strAtrouver))
                {
                  System.out.println("Le char \'r\' se trouve en [i][0] soit: [" + i + "][0] (dimension 1)");
                   break;
                }
             }
             
             int i1 = i;
             return i1;
          }
    


    Et l'appel de cette méthode depuis la méthode main de la classe pour tester:

            char chAtrouver = 'r';
    // appel méthode: retournant i1
             int i1 = retourIndice1(chAtrouver);
            // on en déduit les 3 autres indices (j1, i2, j2)
             int j1 = 0;
             int i2 = i1;
             int j2 = 1;
             
             System.out.println("\nLES 4 INDICES:\n");
             System.out.println("i1 = " + i1 + "\nj1 = " + 0 + "\ni2 = " + i2 + "\nj2 = " + 1);
    


    Cordialement,

    Dan
    0