Java: Liste d'objets
Résolu
Remad
Messages postés
1694
Statut
Membre
-
Remad Messages postés 1694 Statut Membre -
Remad Messages postés 1694 Statut Membre -
(Re)bonjour,
Je suis en train de faire un questionnaire en Java, avec deux types de questions ("MultipleChoiceQuestion" et "TextBasedQuestion") qui dérivent de la classe "Question".
J'aurais voulu savoir comment il était possible dans ma classe "Questionnaire" de faire une liste de questions, les instanciers, et vérifier aussi les exceptions.
Le code en ce moment ressemble à sa (c'est pas beau attention!)
Cordialement
Je suis en train de faire un questionnaire en Java, avec deux types de questions ("MultipleChoiceQuestion" et "TextBasedQuestion") qui dérivent de la classe "Question".
J'aurais voulu savoir comment il était possible dans ma classe "Questionnaire" de faire une liste de questions, les instanciers, et vérifier aussi les exceptions.
Le code en ce moment ressemble à sa (c'est pas beau attention!)
public class Questionnaire
{
private String aswer1Choices[] = {"void", "blou", "blah", "public void setUnit (String unit)"};
private ArrayList<Question> list = new ArrayList<Question>();
public Questionnaire()
{
try
{
list
list[0] = new TextBasedQuestion("Create a header for a set method for a String variable named 'unit'?", "public void setUnit (String unit)");
list[1] = new MultipleChoiceQuestion("Which is the header for a set method for a String variable named 'unit'?", "1", aswer1Choices);
}
catch (QuestionnaireException e)
{
System.out.println(e.getMessage());
}
finally
{
}
}
}
Cordialement
5 réponses
-
Tu ne peux pas utiliser list[0] comme pour un tableau, ici il faut que tu utilises add(E)
-
Sa fonctionne, maintenant, j'aurais une autre petite question, comment on passe un String[] en paramètres? J'ai essayé
new MultipleChoiceQuestion("Question 2", "1", ["1", "2", "3", "4"]);sa marche pas, pareil avec des accolades et non des crochets.
Constructeur de MultipleChoiceQuestion:public MultipleChoiceQuestion(String question, String answer, String[] choices) throws QAInputException, ChoicesException
-
Deux manières de faire :
public MultipleChoiceQuestion(String question, String answer, String[] choices) new MultipleChoiceQuestion("Question 2", "1", new String[] {"1", "2", "3", "4"}); public MultipleChoiceQuestion(String question, String answer, String...choices) new MultipleChoiceQuestion("Question 2", "1", "1", "2", "3", "4");
-
-
-
Hello tout le monde,
j'aurais encore une petite question:
Comment je peux faire pour savoir si un objet dans maArrayList<Question> list = new ArrayList<Question>();
est de type Question ou MultipleChoiceQuestion (qui dérive de question)?
J'ai unprivate String[] choices;
dans MultipleChoiceQuestion qui n'est pas dans Question. Donc, il faudrait que je sache si l'objet instancié dans la liste est de type Question ou non, pour savoir si je dois récupérer les choix de réponses aussi.
Merci d'avance!-
Tu peux utiliser (X instanceof Y) qui renvoie vrai si X est un objet :
* de la classe Y
* d'une des classes filles (petites-filles...) de la classe Y.
* d'une classe qui implémente l'interface Y.
* d'une classe qui implémente une des interfaces filles (petites-filles...) de l'interface Y.
* d'une des classes filles (petites-filles...) d'une classe qui implémente l'interface Y.
* d'une des classes filles (petites-filles...) d'une classe qui implémente une des interfaces filles (petites-filles...) de l'interface Y.
Question q = list.get(i); if (q instanceof MultipleChoiceQuestion) { MultipleChoiceQuestion mq = (MultipleChoiceQuestion) q; String[] c = mq.choices(); // ... }
-
-
Euh... Pourquoi Eclipse me sort une alerte "finally block does not compile normally" ?
for (int i=0; i<theQuestions.getNumberQuestions(); i++) { try { if (theQuestions.isMCQ(i)) { System.out.println(i + " is an MCQ"); } else { System.out.println(i + " is not an MCQ"); } } catch (IndexOutOfBoundsException e){ e.printStackTrace(); } finally { continue; } } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ceci sera surement ma dernière question: comment dans ma classe Questionnaire, je peux récupérer la String[] qui est crée seulement par une question de type MCQ? J'essaye sa, sa ne veut pas fonctionner, sa me sort que getChoices n'est pas défini dans la classe Question.
public String[] getChoiceAnswerMCQ(int number) { if (!isMCQ(number)) { throw new QuestionnaireException("Not an MCQ."); } else { return (list.get(number).getChoices()); } }
Je te remercie beaucoup par ailleurs!-
Je pense que c'est comme tout à l'heure, tu dois caster ta Question en MCQ pour lui appliquer la méthode getChoices :
public String[] getChoiceAnswerMCQ(int number) throws QuestionnaireException { if (isMCQ(number)) return ((MCQ) list.get(number)).getChoices()); else throw new QuestionnaireException("Not an MCQ."); } -
-