Nombre aléatoire, arraylist (quizz, question) - Java - Programmation
Marsh Posté le 01-04-2014 à 15:19:20
Convertir une chaine en boolean, mais mets 'true' ou 'false' dans le fichier mieux que T ou F
Code :
|
Pour invoquer une méthode d'une classe, la méthode étant connue par une String, on utilise la reflection.
C'est pratique, cela est fonctionnellement puissant mais gourmand en ressources
et peu maintenable lors du debuggage de grosses applis. Bref à éviter si tu es au boulot.
Autrement regardes
http://ricky81.developpez.com/tuto [...] eflection/
et en particulier :
Code :
|
Ton code est pas trop mauvais, suffisament modulaire, mais évites les accents dans les noms de méthode (ExceptionParametrageErroné)
Marsh Posté le 01-04-2014 à 15:38:33
D'accord, merci pour ta réponse! Et tu me conseil de faire les conversions dans le constructeur de ma classe question pour n'avoir qu'à les faire qu'une seule fois ou à chaque fois que je les utilise?
Je début en Java donc je ne suis pas très performant et la reflection me paraît trop compliquée à utiliser surtout que mes données sont stockées dans une array liste. Et le but était de simplement utiliser un indice avec un get pour pouvoir récupérer facilement les données dans mes autres classes. Je pensais qu'un "extends nom de la classe" me permettrai d'accéder à ma liste et d'en récupérer les données mais apparemment non?
Marsh Posté le 01-04-2014 à 16:22:43
Je te cite : L'idée serait d'appeler mes méthodes définies dans les éléments de ma liste
Donc méthode définie sous forme de String, de la j'en déduits que tu veux faire de la reflection,
sans affirmer que c'est la meilleure solution à ton problème.
codronpa a écrit : Et tu me conseil de faire les conversions dans le constructeur de ma classe question pour n'avoir qu'à les faire qu'une seule fois ou à chaque fois que je les utilise? |
Une seule fois. Dans le constructeur
codronpa a écrit : Et le but était de simplement utiliser un indice avec un get pour pouvoir récupérer facilement les données dans mes autres classes. |
Tu as essayé et cela fonctionne ? je ne vois pas ce que tu veux faire.
codronpa a écrit : Je pensais qu'un "extends nom de la classe" me permettrai d'accéder à ma liste et d'en récupérer les données mais apparemment non? |
Accéder aux attributs protected ou public, c'est une chose ...
Les classes héritant de Jeu "extends jeu" ne pourront pas accèder à la liste listeQuestion : l'attribut est private.
Tu me diras qu'il y a un getter, mais si tu utilises le getter tu n'as pas besoin du extends , ou plutôt tu fais une mauvaise utilisation de l'héritage
Marsh Posté le 01-04-2014 à 16:45:54
C'est bon j'ai réussi pour le constructeur ça donne :
Code :
|
ça m'a l'air d'être plutôt correct!
Bah justement je crée une Array List dans le but de pouvoir l'utiliser dans ma classe "graphique", mais je n'arrive pas à récupérer les données de l'array listQuestions, c'est juste un problème de syntaxe je pense qu'il existe une ligne de code qui permet de remplir un Jpannel avec les éléments d'une liste. Et il me semble que les ArrayList sont indicé, je m'explique avec cet exemple :
Si j'écris ça :
ArrayList<String> array_L=new ArrayList<String>();
array_L.add("Lundi" );
Comment récupérer "lundi" dans une autre classe qui dont son papa est la classe contenant l'arryList?
Merci du temps que vous prenez, j'aimerai être plus précis dans mes questions mais j'ai du mal avec le vocabulaire.
Marsh Posté le 01-04-2014 à 17:01:44
On dit pas "papa" mais c'est la maman : la classe mère exactement.
http://docs.oracle.com/javase/7/do [...] yList.html
méthode get(int i) : Returns the element at the specified position in this list.
Tu mets la liste à public, et tu fais simplement un listeQuestion.get(0), puis listeQuestion.get(1) etc etc dans la classe fille .... cela implique que les éléments que tu cherches soient toujours dans le meme ordre
Marsh Posté le 01-04-2014 à 17:18:44
D'accord super je vais essayé tout ça!
J'ai juste une dernière question, je panique parce que depuis deux heures je ne peux plus rien faire et un message d'erreur s'affiche dès que j’exécute mon programme :
Erreur : la méthode principale est introuvable dans la classe JeuW, définissez la méthode principale comme suit :
public static void main(String[] args)
Est ce vous sauriez ce qui cause ça? J'ai cherché on m'a parlé de bibliothèque jar mal renseignée...
Marsh Posté le 01-04-2014 à 19:19:11
Bon j'ai bien avancé sur mon classe JeuW mais j'aurai une autre question : comment récupérer les valeurs qui ont été selectionnée dans une checkbox pour vérifier si elles sont juste, si quelqu'un saurait écrire ce petit bout manquant ou à des pistes??
Code :
|
Marsh Posté le 01-04-2014 à 19:29:41
JCheckBox Rep1 = = listeQuestion.get(3); ligne 40 c'est un truc comme ça mais ça me met des erreurs ??
Marsh Posté le 01-04-2014 à 20:20:20
Le fait de soumettre le code entier ne signifie pas que je le lise ... pas le temps.
Si tu as du mal à manipuler les checkbox, tu fais un petit tutorial au lieu de poser des questions qui sont en résumé basique, mais dont la réponse ne se fait pas en deux lignes
http://www.java2s.com/Code/Java/Sw [...] oxDemo.htm
Autrement il y a une méthode isSelected() sur la checkbox ?
Marsh Posté le 01-04-2014 à 21:16:50
Ok ok..
Oui j'ai du mal à les manipuler mais dans les tupo je ne trouve pas la façon dont je veux le faire!
Bref je vais chercher!
Merci
Marsh Posté le 01-04-2014 à 22:00:07
Bon j'ai une question beaucoup plus précise ça peut être intéressant pour le forum.
J'ai créé deux fonctions qui me permettent de remplir mes checkbox lorsque l'on clique sur suivant et une autre qui me permet de vérifier si la réponse est bonne. Le problème est qu'il ne veut pas prendre mes checkbox (je ne sais pas si c'est un problème de portée ou autre). Est ce que vous pourriez m'indiquer mon erreur?
Je précise que je ne donne le code que de deux petites classes.
Code :
|
Marsh Posté le 26-08-2017 à 16:45:37
Salut tout le monde !!
Je vois que sur cette page vous êtes super aidant !
J'ai un problème en ce moment...
j'ai également crée un quizz et une fois que j'ai répondu à la dernière question, l'application redémarre..
Du coup je voulais savoir comment faire proposer au joueur de recommencer ou de retourner au menu principal une fois le quizz finit.
Je vous montre comment j'ai crée mon quizz pour vous donner le max d'informations:
Je possède deux dossiers java : VoitureQuizz.java (Celui où se situe les nouvelles données que tu m'as indiquées) et VoitureLibrary.java
Le premier:
package fr.application.amandine.quizz;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Scanner;
public class VoitureQuizz extends AppCompatActivity {
private VoitureLibrary mVoitureLibrary = new VoitureLibrary();
private TextView mQuestionView;
private Button mButtonChoice1;
//même chose pour les trois autres boutons
private String mAnswer;
private int mQuestionNumber = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voiture_quizz);
mQuestionView = (TextView) findViewById(R.id.question);
mButtonChoice1 = (Button) findViewById(R.id.choice1);
//même chose pour les trois autres boutons
updateQuestion();
mButtonChoice1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mButtonChoice1.getText() == mAnswer) {
updateQuestion();
Toast.makeText(VoitureQuizz.this, "vrai", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(VoitureQuizz.this, "faux", Toast.LENGTH_SHORT).show();}}});}
//même chose pour les trois autres boutons
private void updateQuestion(){
mQuestionView.setText(mVoitureLibrary.getQuestion(mQuestionNumber));
mButtonChoice1.setText(mVoitureLibrary.getChoice1(mQuestionNumber));
//même chose pour les trois autres boutons
mAnswer = mVoitureLibrary.getCorrectAnswer(mQuestionNumber);
mQuestionNumber++;
}
et un deuxième:
package fr.application.amandine.quizz;
import android.support.v7.app.AppCompatActivity;
public class VoitureLibrary extends AppCompatActivity {
private String mQuestions [] = {
"",
"",
"",
};
private String mChoices [] [] = {
{"","","",""},
{"","","",""},
{"","","",""},
};
private String mCorrectAnswers [] = {"","",""};
public String getQuestion (int a) {
String question = mQuestions [a];
return question;
}
public String getChoice1 (int a) {
String choice0 = mChoices [a][0];
return choice0;
}
public String getChoice2 (int a) {
String choice1 = mChoices[a][1];
return choice1;
}
public String getChoice3 (int a) {
String choice2 = mChoices[a][2];
return choice2;
}
public String getChoice4 (int a) {
String choice3 = mChoices[a][3];
return choice3;
}
public String getCorrectAnswer (int a) {
String answer = mCorrectAnswers [a];
return answer;}}
Si quelqu'un sait comment faire parce qu je suis trop décue que l'appli s'arrête...
Je vous remercie d'avance et prends tous les conseils !!
Marsh Posté le 26-08-2017 à 17:33:29
Ton programme plante. Regarde la stack dans ton android studio, ça te dira tout.
ou pas.
Tu dois avoir un dépassement de tableau pour mQuestionNumber=3
Marsh Posté le 01-04-2014 à 14:04:02
Bonjour,
Alors je fais un programme pour un quizz sur les pays. J'ai déjà créé mes classes qui me permettent de lire un fichier texte et stocker les différentes réponses au questions tout ça dans un ArrayList. J'utilise une classe QuizzW qui est ma partie design (IHM). Dans cette classe je voudrais qu'à son ouverture un nombre aléatoire unique se crée (j'ai déjà programmé cette classe Rnd) et que l'on tire au hasard dans ma liste pour ensuite remplir les checkbox (avec les propositions correspondantes, france, ukraine, brésil par exemple), le Jpannel avec l'image associée. Ensuite quant l'on clique sur btn suivant on vérifie si la checkbox cochée est la bonne et on affiche un label de bonne ou mauvaise réponse. Je voudrais démarrer un compteur dans le bouton suivant et quant 20 questions ont été posées on n'arrête et on n'affiche le score.
L'idée serait d'appeler mes méthodes définies dans les éléments de ma liste et remplir les checkbox avec les string. Plus dur, convertir T et F en true and false pour pouvoir vérifier la réponse des gens. Et encore plus dur, comment lui dire dans un Jpannel que l'image est dans mon ArrayList et qu'il doit le lire comme une racine de fichier...???
Je vous joins les codes et classes associées.
Si quelqu'un arrive à comprendre le code et à une piste je suis preneur!
Exemple d'une ligne de mon fichier.txt :
Roumanie;roumanie.png;Roumanie;T;France;F;Mali;F