Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trie d'un tableau multidimensionel

    28 août 2016 à 21:42:34

    Bonsoir,

    Après de longue recherche je ne trouve toujours pas comment trier mon tableau sur la première variable d'un second tableau. Je débute donc je ne m'exprime surement pas bien je vous joint donc mon code

    package be.ephec.exercice2;

    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Comparator;

    public class MainExercice {
       
        public static void main(String[] args) {
            Exercice tableau[] = new Exercice[3];
           
            String tabQCM1[] = {
                    "x²+36\n",
                    "x²+12x+36\n",
                    "x²+6x+36"
            };
            tableau[0] = new QCM(1, "(x+6)² est égal à \n" + "Propositions de réponses\n", QCM.TYPE_EXERCICE_QCM, tabQCM1, 1);
           
            tableau[1] = new ExerciceATrou(2, "Complète cette phrase avec le verbe entre parenthèses conjugué au <<simple present>>", ExerciceATrou.TYPE_EXERCICE_A_TROU, "Jane _____ ", "buys", "beautifull clothes");
           
            String tabQCM2[] = new String[2];
                    tabQCM2[0] = "vrai\n";
                    tabQCM2[1] = "faux\n";
                   
            tableau[2] = new QCM(1, "Java est un langage orienté objet ?\n" + "Propositions de réponses\n",        QCM.TYPE_EXERCICE_VRAI_OU_FAUX, tabQCM2, 0);
            for (int i = 0 ; i < tableau.length ; i++){
                System.out.println(tableau[i].toString());
                System.out.println("\n--------------------\n");
               
               
            }
           
           
           
           
        }
           

    }

    J'ai mis en bleu clair l'élément sur lequel je souhaiterai trier mon tableau

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      28 août 2016 à 22:48:36

      Bonjour,

      Avant toutes choses, paste ton code en te servant du bouton

      </>

      présent sur l'éditeur. Le code sera bien plus lisible.

      Ensuite ton problème n'est pas clair. Tu veux trier le contenu d'un tableau selon le résultat d'un autre tableau ? Tu veux trier un tableau par rapport a son contenu ?

      Regarde du côté du tri a bulles, le principe le plus simple a mettre en place, et qui fonctionnera parfaitement dans ton cas de figure.

      Et même si ton code est complet, les explications sont quand même les bienvenues sur le travail que tu as apporté et que tu recherche.

      • Partager sur Facebook
      • Partager sur Twitter
        28 août 2016 à 23:09:01

        Les chiffres que j'ai mis en bleu correspondent à un niveau de difficulté selon l'exercice et il faudrait que lors de l'affichage ceux-ci soit trier suivant cette ordre.

        package be.ephec.exercice2;
        
        import java.util.Arrays;
        import java.util.Collections;
        import java.util.Comparator;
        
        public class MainExercice {
           
            public static void main(String[] args) {
                Exercice tableau[] = new Exercice[3];
               
                String tabQCM1[] = {
                        "x²+36\n",
                        "x²+12x+36\n",
                        "x²+6x+36"
                };
                tableau[0] = new QCM(1, "(x+6)² est égal à \n" + "Propositions de réponses\n", QCM.TYPE_EXERCICE_QCM, tabQCM1, 1);
               
                tableau[1] = new ExerciceATrou(2, "Complète cette phrase avec le verbe entre parenthèses conjugué au <<simple present>>", ExerciceATrou.TYPE_EXERCICE_A_TROU, "Jane _____ ", "buys", "beautifull clothes");
               
                String tabQCM2[] = new String[2];
                        tabQCM2[0] = "vrai\n";
                        tabQCM2[1] = "faux\n";
                       
                tableau[2] = new QCM(1, "Java est un langage orienté objet ?\n" + "Propositions de réponses\n",        QCM.TYPE_EXERCICE_VRAI_OU_FAUX, tabQCM2, 0);
                for (int i = 0 ; i < tableau.length ; i++){
                    System.out.println(tableau[i].toString());
                    System.out.println("\n--------------------\n");
                   
                   
                }
               
               
               
               
            }
               
        
        }
        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2016 à 15:39:47

          Essayes d'implémenter les méthodes "equals" et "hashCode" dans ta classe QCM ...

          EDIT [31/08/2016]

          Effectivement dorz a raison, je me suis trompé, equals et hashcode te permettront de savoir si l'ojbet est contenu dans la collection.

          Sa réponse est correcte, il faut implémenter Comparable.

          -
          Edité par Kamaloush 31 août 2016 à 17:44:14

          • Partager sur Facebook
          • Partager sur Twitter
            31 août 2016 à 14:36:19

            Ce que je vois, c'est que tu as 3 classes

            - QCM extends Exercice

            - ExerciceATrou extends Exercice

            - Exercice

            Et dans la classe Exercice tu as probablement un champs "id" (ou categorie, bref le champs sur lequel tu veux baser ton tri).

            Si c'est le cas, j'implémenterai l'interface Comparable à la classe Exercice.

            class Exercice implements Comparable{
              public int compareTo(Exercice e){
                if (id == e.getId()) return 0;
                else if (id > e.getId()) return 1;
                else return -1
              }
            }

            A partir de là tu pourras comparer des Exercices et donc trier ton tableau.

            Dans ton exemple : tableau[0].compareTo(tableau[1]) te donnera comme résultat -1 donc tu sais que tableau[0] "est inférieur à" tableau[1]

            Pour ce qui est du tri, je te laisse voir les 3000 types de tri qui existe.

            En aucun cas, equals et hashCode ne t'aidera à trier.

            • Partager sur Facebook
            • Partager sur Twitter

            Trie d'un tableau multidimensionel

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown