Pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter, inscrivez-vous gratuitement !

 

  1. #1
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : février 2018
    Messages : 5
    Points : 2
    Points
    2

    Par défaut Créer un tableau java en 2 dimensions

    Bonjour,
    Je souhaite réaliser un test de personnalité d'environ 40 questions. Chaque question possède 9 réponses et ces 9 réponses correspondent à 9 profils différents. Je cherche donc a réaliser un tableau en Java qui contiendrait les questions et les associerait à des réponses. Ces réponses seraient ensuite associées à des profils... Je débute en codage et je n'ai aucune idée de comment débuter! Pourriez-vous m'aider s'il vous plait?
    Merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 449
    Points : 26 922
    Points
    26 922
    Billets dans le blog
    2

    Par défaut

    Salut,


    1. Pour créer un tableau à 2 dimensions contenant des profils (représentés par une classe Profil par exemple) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Profil[][] profils = new Profil[40][9];
      Mais avec ça le tableau ne contient aucun profil. Il faut les affecter :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      profile[numeroQuestion][numeroReponse] = profilCorrespondant;
      Cela fait 360 lignes à taper, ça peut être fastidieux. Il vaut mieux envisager d'avoir un fichier qui contient les données (du xml ou du json, ou autre) et de charger ça automatiquement, auquel cas, tu ne crées pas forcément directement le tableau, mais tu peux charger ça dans une List et à la fin tu convertis en tableau éventuellement.
    2. Si on ne t'impose pas l'utilisation des tableaux, tu peux faire un modèle objet :
      1. une classe pour représenter un Profil
      2. une classe pour représenter une Réponse, qui a un attribut de type Profil
      3. une classe pour représenter une question, qui a une liste de Reponse (List<Reponse>)

      Et donc une List<Question> pour la liste de questions
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : février 2018
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Merci de votre réponse, cela m'aide déjà beaucoup! Je n'ai rien d'imposé donc votre idée de créer des classes est envisageable
    Je n'en n'ai jamais fait, donc est-ce que quelqu'un pourrait me lancer des pistes?
    Sinon, j'avais pensé à remplir un tableau à partir d'un fichier texte mais encore une fois les pistes que je trouve sur Google ne m'aide pas beaucoup...
    Encore merci d'avance

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 449
    Points : 26 922
    Points
    26 922
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par ProjetISNmgz Voir le message
    Sinon, j'avais pensé à remplir un tableau à partir d'un fichier texte mais encore une fois les pistes que je trouve sur Google ne m'aide pas beaucoup...
    C'est quoi la complexité de tes profils ? Selon le type et la complexité, un fichier texte de type CSV, ou tab-separated peut être le plus simple pour le remplir comme pour le lire. Si les profils sont un peu complexe, et qu'il y a des informations structurées, en particulier en arbre, du json ou du xml est préférable. Ensuite, quand tu as un format, trouver de la doc ou des examples, c'est déjà plus facile.

    Citation Envoyé par ProjetISNmgz Voir le message
    Merci de votre réponse, cela m'aide déjà beaucoup! Je n'ai rien d'imposé donc votre idée de créer des classes est envisageable
    Je n'en n'ai jamais fait, donc est-ce que quelqu'un pourrait me lancer des pistes?
    Tu veux dire que tu n'as jamais fait de classes ? Autre que celle avec la méthode "main" ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : février 2018
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Bonjour,
    En fait pour être plus précise, il s'agit d'un test de personnalité où l'utilisateur est un des 9 profils (type perfectionniste, observateur...). Ainsi, je cherche à associer à chaque question, 9 réponses. Et aux 9 réponses, les 9 profils... Ce ne sont donc pas des profils complexes, car si la personne est par exemple "perfectionniste", à l'aide d'un autre tableau, on va associer ce profil à la fiche descriptive du "perfectionniste" et utilisé une méthode case of, pour afficher la fiche descriptive...
    Mais pour le moment je cherche juste à associer aux questions, les réponses. Et aux réponses, les profils.
    Non, je n'ai jamais fait de classe...
    Merci d'avance

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 449
    Points : 26 922
    Points
    26 922
    Billets dans le blog
    2

    Par défaut

    Ok, un profil c'est juste un identifiant et à part on a une base de descriptions de profil. Si le but est de n'afficher une fiche descriptive, imaginons un fichier html par exemple, on peut simplement faire un dossier avec pleins de fichiers html, un par profil, et considérer que l'identifiant est le nom du fichier ou un moyen de l'obtenir facilement, et par ailleurs un moyen d'obtenir son nom affichable si nécessaire (si l'identifiant n'est pas directement le nom).

    La solution par tableau dans ce cas reste le plus simple, si tu n'as jamais fait de classe (c'est quand même un peu la base dans un langage comme Java, orienté objet), et en particulier si c'est pour du one shot.

    Le code pour afficher une fiche de profil (dans un navigateur) pourrait se résumer à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Desktop.getDesktop().browse(Paths.get(CHEMIN_DOSSIER_PROFILS + profil + ".hmtl").toUri());
    avec CHEMIN_DOSSIER_PROFILS le chemin vers de dossier de profils et profile le nom du profil et du fichier (sans l'extension).

    En conséquence, avec trois tableaux tu peux faire le programme principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String[] questions = lireQuestions(); // un tableau de 40 questions
    String[][] questionsEtReponses = lireQuestionsEtResponsesDansFichier(); // un tableau de 40*9 propositions de réponse possible
    String[][] profilsParReponses = lireProfilParReponsesDansFichier(); // un tableau de 40*9 identifiant de profil
     
    for(int i=numeroQuestion; numeroQuestion<questions.length; numeroQuestion++) {
     
        String question = questions[numeroQuestion];
        String[] reponses = questionsEtReponses[numeroQuestion];
        int numeroDeReponseChoisie = poserQuestion(question, reponses);
        afficherProfil( pofilesParReponse[numeroQuestion][numeroDeReponseChoisie] );   
     
    }
    Avec des objets (décrits par des classes) on aurait, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<Question> questions = lireDansFichier();
    for(Question question : questions) {
        Reponse reponseDonneeParUtilisateur = poserQuestion( question );
        afficherProfil( reponseDonneeParUtilisateur.getProfil() );
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : février 2018
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    D'accord, merci beaucoup cela m'aide déjà pas mal! Bonne journée

  8. #8
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : février 2018
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Citation Envoyé par joel.drigo Voir le message

    En conséquence, avec trois tableaux tu peux faire le programme principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String[] questions = lireQuestions(); // un tableau de 40 questions
    String[][] questionsEtReponses = lireQuestionsEtResponsesDansFichier(); // un tableau de 40*9 propositions de réponse possible
    String[][] profilsParReponses = lireProfilParReponsesDansFichier(); // un tableau de 40*9 identifiant de profil
     
    for(int i=numeroQuestion; numeroQuestion<questions.length; numeroQuestion++) {
     
        String question = questions[numeroQuestion];
        String[] reponses = questionsEtReponses[numeroQuestion];
        int numeroDeReponseChoisie = poserQuestion(question, reponses);
        afficherProfil( pofilesParReponse[numeroQuestion][numeroDeReponseChoisie] );   
     
    }
    Avec des objets (décrits par des classes) on aurait, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<Question> questions = lireDansFichier();
    for(Question question : questions) {
        Reponse reponseDonneeParUtilisateur = poserQuestion( question );
        afficherProfil( reponseDonneeParUtilisateur.getProfil() );
    }
    Mais du coup, où est-ce que je rentre toutes mes questions et toutes mes réponses? Merci d'avance

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 449
    Points : 26 922
    Points
    26 922
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par ProjetISNmgz Voir le message
    Mais du coup, où est-ce que je rentre toutes mes questions et toutes mes réponses? Merci d'avance


    1. Par exemple,
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      String[] questions = lireQuestions(); // un tableau de 40 questions
      par exemple le fichier est un texte avec une question par ligne :
      Question 1
      Question 2
      Question 3
      ...
      
      et par exemple :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      public String[] lireQuestions() throws IOException {
      		return Files.readAllLines(Paths.get(NOM_FICHIER_QUESTIONS)).toArray(new String[0]);
      }

    2. Ou pour
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      List<Question> questions = lireDansFichier();
      Par exemple, le fichier est :
      Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
       
        <questions>
           <question texte="Question 1">
                    <reponses>
                          <reponse texte="Reponse 1" profil="1"/>
                          <reponse texte="Reponse 2" profil="2"/>
                          <reponse texte="Reponse 3" profil="3"/>
                    </reponses>
           </question>
           <question texte="Question 2">
                    <reponses>
                          <reponse texte="Reponse 1" profil="4"/>
                          <reponse texte="Reponse 2" profil="5"/>
                          <reponse texte="Reponse 3" profil="6"/>
                    </reponses>
           </question>
         </questions>

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      public class Question {
       
           private String texte;
           private List<Reponse> reponses;
       
           public Question(String texte, Collection<Response> reponses) {
                 this.texte=texte;
                 this.reponses = Collections.unmodifiableList(new ArrayList<>(reponses));
           }
       
           public String getTexte() {
                 return texte;
           }
           public List<Reponse> getReponses() {
                 return responses;
           }
       
      }
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      public class Reponse {
       
           private String texte;
           private String profil;
       
           public Reponse(String texte, String profil) {
               this.texte=texte;
               this.profil=profil;
           }
           public String getTexte() {
                 return texte;
           }
           public String getProfil() {
                 return profil;
           }
       
      }
      Et par exemple :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      	public List<Question> lireDansFichier() throws IOException, XMLStreamException {
       
      		List<Question> questions = new ArrayList<>(); // pour stocker les queestions
      		List<Reponse> reponses = new ArrayList<>(); // pour stocker les réponses d'une question en cours de lecture
      		String question; // pour stocker la question en cours de lecture
       
      		try (InputStream input = Files.newInputStream(Paths.get(NOM_FICHIER_QUESTION))) {
      			XMLInputFactory factory = XMLInputFactory.newInstance();
      			XMLStreamReader xmlr = factory.createXMLStreamReader(input);
      			try {
       
      				while(xmlr.hasNext()) {
      					switch(xmlr.getEventType()) {
      					case XMLEvent.START_ELEMENT: // au début de l'élément
      						switch(xmlr.getLocalName()) {
      						case "question": // si l'élément est question, on lit le texte
      							question = xmlr.getAttributeValue(null, "texte");
      							break;
      						case "reponse": // si l'élément est reponse, on lit la reponse et on la stocke
      							reponses.add(new Reponse(xmlr.getAttributeValue(null, "texte"),
      									xmlr.getAttributeValue(null, "profil")));
      							break;
      						}
      						break;
      					case XMLEvent.END_ELEMENT: // a la fin de l'élément
      						switch(xmlr.getLocalName()) {
      						case "question": // si l'élément est question, on fabrique la question et on la stocke
      							questions.add(new Question(question,reponses));
      							reponses.clear(); // on remet à zéro la liste de réponses pour la prochaine question
      							break;
      						}
      					}
      				}
       
      			} finally {
      				xmlr.close();
      			}
      		}
       
      		return questions;
       
      	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [XL-2007] Comment créer un tableau à dimension
    Par stardeus dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 13/02/2013, 08h20
  2. Créer un tableau à 2 dimensions dépendantes
    Par bobbyboy dans le forum Fortran
    Réponses: 8
    Dernier message: 21/06/2012, 19h26
  3. Créer un tableau à deux dimensions dynamique
    Par dev14 dans le forum Syntaxe
    Réponses: 2
    Dernier message: 07/02/2012, 09h12
  4. Réponses: 0
    Dernier message: 27/04/2010, 16h40
  5. créer un tableau 2 dimensions avec Malloc
    Par nimportekoi dans le forum C
    Réponses: 14
    Dernier message: 15/11/2006, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo