Bonjour,
je suis en train de concevoir un jeu de question réponse, et là je suis au stade d'alimentation des catégories avec des questions je fais tout comme il faut , et quand je consulte mes catégories ça me mets la derniere catégorie dupliqué au nombre de catégories que j'ai saisie auparavant, après je sauvegarde je quitte le jeu et quand j le redémarre je consulte mes catégories et là ça garde bien le nom de la catégories mais les questions et réponse saisies ça m'affiche null à la place.
je vous mets le code ci dessous merci :
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
import java.io.Serializable;
 
 
 
public class Questrep implements Serializable
{
	static String question;//question posé
	static String reponse;//bonne réponse
	static String rep1;//réponse erroné
	static String rep2;
	static String rep3;
	static String rep4;
	static int level;//niveau de difficulté d'une question 1 pour question simple et 2 pour question difficile
 
	public Questrep (String quest,String rep,String rep1,String rep2,String rep3,String rep4,int lev)//constructeur de la classe Questrep
	{
		Questrep.question=quest;
		Questrep.reponse=rep;
		Questrep.rep1=rep1;
		Questrep.rep2=rep2;
		Questrep.rep3=rep3;
		Questrep.rep4=rep4;
		Questrep.level=lev;
 
	}
	public void afficher_questrep()
	{
		System.out.println("la question est:" +this.question);
		System.out.println("la bonne réponse est:" +this.reponse);
		System.out.println("la premiere mauvaise réponse est:"+this.rep1);
		System.out.println("la deuxieme mauvaise réponse est:"+this.rep2);
		System.out.println("la troisieme mauvaise réponse est:"+this.rep3);
		System.out.println("la quatrieme mauvaise réponse est:"+this.rep4);
		System.out.println("la cinquieme mauvaise réponse est:"+this.level);
	}
}
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Vector;
 
 
public class Categorie implements  Serializable
{
	String nom_Categ; //le type de la catégorie
	public Vector<Questrep> v; //on stockera nos questions réponses dans une classe Vector
	int nb_quest_rep; //le nombre des questions réponses dans la catégorie
 
 
 
 
	public void initialise() //initialise le Vector
	{
		v= new Vector<Questrep> ();
	}
	public boolean ajouter(Questrep quest)throws Exception//ajoute des questions réponses à la catégorie
	{
		if (v.add(quest))//retourne true si l'ajout s'est bien déroulé
		return true;
		else//retourne false sinon
		return false;
	}
	public Categorie(String nom)//constructeur de categorie
	{
		this.nom_Categ=nom;
 
	}
 
	public boolean supprimer(Questrep quest)//ajoute des questions réponses à la catégorie
	{
		if (v.remove(quest))//retourne true si la suppression s'est bien déroulé
		return true;
		else//retourne false sinon
		return false;
	}
 
	public void afficher_categ() 
	{
		System.out.println("le nom de la catégorie est:" + this.nom_Categ);
		for(int i=0;i<v.size();i++)
		{
			((Questrep) v.elementAt(i)).afficher_questrep();
		}
 
 
	}
 
 
 
 
 
 
}
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import java.util.*;
import java.io.*;
 
 
public class Listecateg implements Serializable
{
	public static  Vector<Categorie> v;
	static int nb_categ=0;//nombre de categorie dans la liste
 
 
 
 
 
	public static  void initialiser() //initialise le Vector
	{
		v= new Vector<Categorie> ();
	}
 
 
	public static  boolean ajouter_categ(Categorie catego)throws Exception//ajoute une categorie à la collection
	{
 
		 if(v.add(catego))//retourne true si l'ajout s'est bien déroulé
		 	{
				System.out.print("l'ajout s'est bien deroulé\n");
				nb_categ++;
				return true;
 
		 	}
		 else 
			{
				System.out.print("l'ajout n'est pas effectué\n");
				return false;
			}
 
	}
 
	public boolean supprimer_categ(Categorie categ)//supprimer une categorie à la collection
	{
		if (v.remove(categ))//retourne true si la suppression s'est bien déroulé
			return true;
			else//retourne false sinon
			return false;
	}
 
	public static  void afficher_list()
	{
 
		for(int i=0;i<v.size();i++)
		{
			((Categorie) v.elementAt(i)).afficher_categ();
		}
	}
 
	public static  void enregistrer_categ(String nom_fichier)throws Exception 
	{
 
		ObjectOutputStream oos;
        FileOutputStream fos;
        try 
        {
        	fos = new FileOutputStream(nom_fichier);
            oos = new ObjectOutputStream(fos);
            oos.writeObject(v);
            oos.close();
 
        }
        catch (IOException e) 
        {
            e.printStackTrace();	 
        }
	}
 
	public static void charger(String nom_fichier) throws Exception
	{
 
		ObjectInputStream ois;
		FileInputStream fis;
		try 
		{
			fis = new FileInputStream(nom_fichier);
			ois = new ObjectInputStream(fis);
			v=(Vector<Categorie>) ois.readObject();
			afficher_list();
			ois.close();
		}
		catch (ClassNotFoundException e) 
		{
            e.printStackTrace();	 
		}
		catch (IOException e)
		{
			e.printStackTrace();	 
		}
	}
 
}
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import java.util.Vector;
 
 
public class Lejeu 
{
 
 
 
 
	public static void main(String [] args) throws Exception
		{
 
 
			System.out.println("*********************************************************************************");
			System.out.println("                    Bonjour et bienvenue dans le jeu                           ");                           
			System.out.println("*********************************************************************************");
			String pseudo = null;//pseudo admin
			String pass = null;//pass admin
			int a = 1;
			do
				{
					System.out.println("veuillez choisir :");
					System.out.println("1 ==> Administrateur");
					System.out.println("2 ==> Joueur");
					System.out.println("3 ==> Quitter");
					int ch=Lire.i();
					switch(ch)
					{
						//Administrateur
						case 1: System.out.println("veuillez entrer votre pseudo:");
								pseudo=Lire.S();
							    System.out.println("veuillez entrer votre mot de passe:");
							    pass=Lire.S();
							    if(pseudo.equals("admin") && pass.equals("admin"))//si pseudo et pass sont bons authentification
									{
							    	int ch1;
							    	do
							    	{
										System.out.println("bienvenue M. l'Administrateur");
										System.out.println("1 ==> Créer un ensemble de catégorie");
										System.out.println("2 ==> Ajouter une catégorie");
										System.out.println("3 ==> Supprimer une catégorie");
										System.out.println("4 ==> Consulter les catégories");
										System.out.println("5 ==> Sauvegarder");
										System.out.println("6 ==> Quitter");
										ch1=Lire.i();
										if(ch1==1)
										{
											creer();
 
										}
										if(ch1==2)//Ajouter une catégrie
 
										{
											char repo;//la réponse au fait si on veut ajouter une autre catégorie
											do
											{
												ajouter();
												System.out.println("voulez vous ajouter une autre catégorie ?");
												repo=Lire.c();
 
											}
											while(repo=='o');
											System.out.println("vos catégorie sont:");
											Listecateg.enregistrer_categ("soufiane.ser");
 
 
 
										}
										if(ch1==3)//Supprimer une catégrie
										{
 
										}
										if(ch1==4)//consulter, charger
										{
											charger();
										}
										if(ch1==5)//sauvegarder
										{
											enregistrer();
										}
										if(ch1==6)
										{
											System.out.println("à bientot");
											break;
										}
							    	}
							    	while(ch1!=6);
									}
							    else
									{
										a=0;//variable servant à reboucler en cas d'echec d'identification
										System.out.println("echec");
									}
 
						//Joueur
						//case 2: System.out.println("veuillez entrer votre pseudo");
								//String pseudo_j=Lire.S();
 
					}
 
 
				}
			while(a==0);
 
		}
	public static void creer()
	{
		Listecateg.initialiser();
	}
	public static void ajouter() throws Exception
	{
		System.out.println("entrer le nom de votre catégorie");
		String categ=Lire.S();
		Categorie C=new Categorie(categ);
		C.initialise();
		int compt=0;
		do//ajouter des questions réponses à la categorie
		{
			System.out.println("entrer votre question");
			String quest=Lire.S();
			System.out.println("entrer votre bonne réponse");
			String rep=Lire.S();
			System.out.println("entrer votre premiere mauvaise réponse");
			String rep1=Lire.S();
			System.out.println("entrer votre deuxieme mauvaise réponse");
			String rep2=Lire.S();
			System.out.println("entrer votre troisieme mauvaise réponse");
			String rep3=Lire.S();
			System.out.println("entrer votre quatrieme mauvaise réponse");
			String rep4=Lire.S();
			System.out.println("entrer le level de la question");//1 facile 2 difficile
			int level=Lire.i();
			Questrep qr=new Questrep(quest,rep,rep1,rep2,rep3,rep4,level);
			C.ajouter(qr);
			compt++;
		}
		while (compt<2);
		Listecateg.ajouter_categ(C);
	}
 
	public static void enregistrer() throws Exception
	{
		Listecateg.enregistrer_categ("soufiane.ser");
	}
	public static void charger() throws Exception
	{
		Listecateg.charger("soufiane.ser");
	}
 
 
}
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
 
import java.io.*;
public class Lire
{
public static String S() // Lire un String
{
String tmp = "";
char C='\0';
try {
         while ((C=(char) System.in.read()) !='\n')
         {
          if (C != '\r')  tmp = tmp+C;
 
         }
   }
 catch (IOException e)
        {
          System.out.println("Erreur de frappe");
          System.exit(0);
        }
 return tmp;
} // fin de S()
 
 public static byte b()  // Lire un entier byte
 {
  	 byte x=0;
 	 	try {
			 x=Byte.parseByte(S());
	  	 	}
 	 	catch (NumberFormatException e) {
          System.out.println("Format numérique incorrect");
          System.exit(0);
    }	
	  return x ;
 }
 
 public static short s()  // Lire un entier short
 {
   	 short x=0;
 	 	try {
			 x=Short.parseShort(S());
	  	 	}
 	 	catch (NumberFormatException e) {
          System.out.println("Format numérique incorrect");
          System.exit(0);
    }	
	  return x ;
 }
 
 public static int i()  // Lire un entier
 {
 	 int x=0;
 	 	try {
			 x=Integer.parseInt(S());
  	 	}
 	 	catch (NumberFormatException e) {
          System.out.println("Format numérique incorrect");
          System.exit(0);
    }	
	  return x ;
 }
 
 public static long l()  // Lire un entier long
 {
 	 long x=0;
 	 	try {
			 x=Long.parseLong(S());
  	 	}
 	 	catch (NumberFormatException e) {
          System.out.println("Format numérique incorrect");
          System.exit(0);
    }	
	  return x ;
 }
 
 public  static double d()  // Lire un double
 {
  	double x=0.0;
 	 	try {
	 		x=Double.valueOf(S()).doubleValue();
 	 	}
 	 	catch (NumberFormatException e) {
          System.out.println("Format numérique incorrect");
          System.exit(0);
    }	
	  return x ;
 }
 
 public  static float f()  // Lire un float
 {
   float x=0.0f;
 	try {
 		x=Float.valueOf(S()).floatValue();
    	}
 	catch (NumberFormatException e) 
 	{
          System.out.println("Format numérique incorrect");
          System.exit(0);
    }	
	  return x ;
 }
 
 public  static char c()  // Lire un caractere
 {
  String tmp=S();
  if (tmp.length()==0)
	  return '\n';
  else 
		{
		return tmp.charAt(0);
		}
 }
}