Bonjour à tous,

Je dois programmer un petit logiciel en mode console devant gérer des bagues dans une base de données pour un bijoutier.

J'ai programmé dans un premier temps mon constructeur ainsi qu'une méthode public String toString(). Ensuite dans mon main je créé une bague et par l'intermédiaire d'un menu, je demande à l'utilisateur toutes les données à mettre dans mon constructeur. Ensuite je mets dans mon tableau à la position i (i = 0 à l'initiation) ma bague. La position i est un compteur qui augmente à chaque nouvelle création de bague :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Bague[] b = new Bague[tailleTableau];
Je crée donc mon tableau ainsi. Ensuite je crée ma bague et la mets dans un tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Bague bague = new Bague( descriptionU, categorieU, tailleU, pierreU, metalU, finiU, prixU, reservee, modifierTailleU, modifierPierreU);
b[numeroBagueU] = bague;
Pour faire quelques vérifications, j'affiche ce quil y a dans mon tableau à la position où j'ai créé ma bague.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
System.out.println(b[numeroBagueU]);
Quand ici j'affiche le contenu de mon tableau, il se passe quelque chose de bizarre, il utilise ma méthode toString()...

toString() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
public String toString(){
       String reponse;
       DecimalFormat dec2 = new DecimalFormat("0.00");
 
       reponse = "Description : " + getDescription() + ". La categorie de la bague est " + CATEGORIES[getCategorie()] + ". La pierre est de type " + PIERRES[getPierre()] + ". La taille est de " + getTaille() + ". Le metal utilise est "
                + TYPE_METAL[getMetal()] + " et le prix est de " + getPrix() + " $";
 
        return reponse;
    }
Il me retourne juste avec un sop une phrase issu de cette méthode.

Cependant tout ce qui est retourné est bon donc, même si je ne comprend pas je suis content...

D'autre part, dans un autre choix du menu, je dois me charger d'afficher la totalité du tableau et dans l'affichage, mon dernier objet rentré prend la place de toutes les autre bagues créées dans le tableau. En gros pour 4 bagues créées en position 0,1,2,3, la position 0,1,2 seront toutes pareilles que la position 3...

Ca c'est ce qui me permet d'afficher tout le tableau ainsi que la position dans le tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
for (int i = 0; i < tailleTableau; i++  ) {
 
    System.out.println(i);
    System.out.println(b[i]);
}
Evidemment quand la position n'a jamais été créée, il me retourne null.

Quelqu'un saurait-il m'indiquer comment corriger ces problèmes ?

Merci d'avance pour votre aide.

Voici le main complet, à tout hasard :
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
public static void main (String[] params) {
        int tailleTableau = 0;
        char choixMenu = 'a'; // initialisation du choix menu
        char choixMenu2;
 
        int reponse = 0;
 
        // variable que l'utilisateur entre
        int afficherCategorie;
        String descriptionU = ""; // U pour rentre par l'utilisateur
        int categorieU;
        int pierreU;
        int tailleU;
        int metalU;
        int finiU;
        double prixU;
        char reponse1 ;
        char reponse2;
        boolean modifierPierreU;
        boolean modifierTailleU;
 
        boolean reservee = false;
        // FIN VARIABLE
 
        System.out.println("Description et presentation du logiciel");
        System.out.println("");
        System.out.println("Veuillez indiquer le nombre de bague maximal qui seront present dans la liste");
        tailleTableau = Clavier.lireIntLn();
        while(tailleTableau < 0) {
            System.out.println("Veuillez entrer une valeur superieur ou egale a 1");
            tailleTableau = Clavier.lireIntLn();
        }
 
        Bague[] b = new Bague[tailleTableau];
 
        while (choixMenu != 'q' && choixMenu != 'Q') {
 
            System.out.println("MENU");
            System.out.println("");
            System.out.println("N - Nouvelle bague");
            System.out.println("I - Modifier bague");
            System.out.println("S - Supprimer bague");
            System.out.println("Q - Quitter");
            System.out.println("Veuillez selectionner une des x options suivantes : n, i, x, q");
            choixMenu = Clavier.lireCharLn();
 
            while (choixMenu != 'n' && choixMenu != 'N' && choixMenu != 'i' && choixMenu != 'I' && choixMenu != 'l' && choixMenu != 'L' && choixMenu != 'q' && choixMenu != 'Q' ) {
                System.out.println("Veuillez rentrer une valeur valide : n, N , i, I, s, S");
                choixMenu = Clavier.lireCharLn();
            }
 
            if (choixMenu == 'n' || choixMenu == 'N'){
 
                System.out.println("Vous allez creer une nouvelle bague. Veuillez suivre les indications");
                System.out.println("**********");
                System.out.println("**********");
 
                System.out.println("Veuillez entrer un description de la bague");
                descriptionU = Clavier.lireString();
                while ( descriptionU == "" ) {
                    System.out.println("Vous etes obliger de rentrer une decription");
                    descriptionU = Clavier.lireString();
                }
 
                System.out.println("Veuillez entrer le numero de categorie de votre bague");
                System.out.println("Les choix des categories figurent parmis les suivantes :");
                System.out.println("");
                System.out.println("0 : Femme    1 : Homme   2  : Unisexe");                  
                categorieU = Clavier.lireIntLn();
                while ( categorieU < 0 && categorieU > 2 ) {
                    System.out.println("Vous devez rentrer une valeur entre 0 et 2 compris");
                    categorieU = Clavier.lireInt();
                }
 
                System.out.println("Veuillez entrer la taille de votre bague, celle-ci doit etre comprise entre 5 et 12");
                tailleU = Clavier.lireIntLn();
                while ( tailleU <  5 || tailleU > 12 ) {
                    System.out.println("Vous devez rentrer une valeur comprise entre 5 et 12");
                    tailleU = Clavier.lireIntLn();
                }
 
                System.out.println("Veuillez entrer le type de pierre de votre bague");
                System.out.println("Les choix de pierre sont les suivants :");
                System.out.println("");
                System.out.println("0 : Aucune       4 : Amethyste   8  : Rubis");
                System.out.println("1 : Inconnue     5 : emeraude    9  : Onyx");
                System.out.println("2 : Saphir       6 : Diamant     10 : Pierre de Lune");
                System.out.println("3 : Peridot      7 : Grenat");
                pierreU = Clavier.lireIntLn();
                while ( pierreU < -1 || pierreU > 11 ) {
                    System.out.println("Vous devez rentrer une valeur entre 0 et 5 ");
                    pierreU = Clavier.lireIntLn();
                }
 
                System.out.println("Veuillez entrer le type de metal de votre bague");
                System.out.println("Les choix de metaux figurent parmi les suivants :");
                System.out.println("");
                System.out.println("0 : Argent            3 : Or Jaune");
                System.out.println("1 : Platine           4 : Or Blanc");
                System.out.println("2 : Acier Inoxydable  5 : Or Rose");
                metalU = Clavier.lireIntLn();
                while ( metalU < -1 || metalU > 6 ) {
                    System.out.println("Vous devez rentrer une valeur entre 0 et 5 ");
                    metalU = Clavier.lireIntLn();
                }
 
                if ( metalU != 1 && metalU != 2) {
                    System.out.println("Veuillez entrer le type de fini de votre bague");
                    System.out.println("Les choix du fini d'une bague sont :");
                    System.out.println("");
                    System.out.println("0 : Aucun   2 : Oxyde");
                    System.out.println("1 : Antique");
                    finiU = Clavier.lireIntLn();
                    while ( finiU < -1 || finiU > 3 ) {
                        System.out.println("Vous devez rentrer une valeur entre 0 et 5 ");
                        finiU = Clavier.lireIntLn();
                    }
                }else {
                    finiU = 0;
                }
 
                System.out.println("Veuillez entrer le prix de votre bague, celui-ci doit etre superieur ou egal a 5");
                prixU = Clavier.lireIntLn();
                while ( prixU < 5 ) {
                    System.out.println("Vous devez rentrer une valeur superieur ou egale a 5 ");
                    prixU = Clavier.lireIntLn();
                }
 
                System.out.println("Faut-il modifier la taille ? entrer v pour oui ou f pour non");
                reponse1 = Clavier.lireCharLn();
                while (reponse1 != 'v' && reponse1 != 'V' && reponse1 != 'f' && reponse1 != 'F' ) {
                    System.out.println("Veuillez entrer v, V pour oui ou f, F pour non");
                    reponse1 = Clavier.lireCharLn();
                }
                modifierTailleU = retournerBooleen(reponse1);
 
 
 
                System.out.println("Faut-il modifier la pierre ? entrer v pour oui ou f pour non");
                reponse2 = Clavier.lireCharLn();
                while (reponse2 != 'v' && reponse2 != 'V' && reponse2 != 'f' && reponse2 != 'F' ){
                    System.out.println("Veuillez entrer v, V pour oui ou f, F pour non");
                    reponse2 = Clavier.lireCharLn();
                }
                modifierPierreU = retournerBooleen(reponse2);
 
                Bague bague123 = new Bague( descriptionU, categorieU, tailleU, pierreU, metalU, finiU, prixU, reservee, modifierTailleU, modifierPierreU);
                b[numeroBagueU] = bague123;
 
                //b[numeroBagueU].toString();
                System.out.println(numeroBagueU);
                System.out.println(numeroBagueU);
                numeroBagueU = numeroBagueU + 1; 
 
            } else if (choixMenu == 'i' || choixMenu == 'I') {
 
                System.out.println("Veuillez indiquer le numero d'identification de la bague que vous voulez afficher a l'ecran");
                reponse = Clavier.lireIntLn();
                while (reponse < 0) { 
                    System.out.println("Veuillez entrer une valeur superieure a 0");
                    reponse = Clavier.lireIntLn();
                }
                if (b[reponse] == null ) {
                    System.out.println("Desole, le numero specifie n'est pas valide");
                } else {
                    System.out.println(b[reponse]);
                }
 
            } else if (choixMenu == 'l' || choixMenu == 'L') {
 
                for (int i = 0; i < tailleTableau; i++  ) {
                    //if (b[i] != null) {
                        System.out.println(i);
                        System.out.println(b[i]);
                    //}
                }
 
                System.out.println("Veuillez faire un choix dans le menu suivant :");
                System.out.println("C - Affiche les bagues dont la categorie est la meme que celle que vous validerez");
                System.out.println("M");
                System.out.println("R");
                System.out.println("P");
                choixMenu2 = Clavier.lireCharLn();
 
                while (choixMenu2 != 'c' && choixMenu2 != 'C' && choixMenu2 != 'm' && choixMenu2 != 'M' && choixMenu2 != 'r' && choixMenu2 != 'R' && choixMenu2 != 'p' && choixMenu2 != 'P' ) {
                    System.out.println("Veuillez entrer une des valeurs suivantes : c, C, m, M, r, R, p, P");
                    choixMenu2 = Clavier.lireCharLn();
                }
 
                if (choixMenu2 == 'c' || choixMenu == 'C') {
 
                    System.out.println("Veuillez entrer une categorie. Cela vous servira a afficher toute les bague de la categorie rentree");
                    System.out.println("0 : Femme    1 : Homme   2  : Unisexe");
                    afficherCategorie = Clavier.lireIntLn();
                    for (int i = 0; i < tailleTableau; i++) {
                        if (b[i].getCategorie() == afficherCategorie) {
                            System.out.println(b[i]);
                        }
                    }
 
                } else if (choixMenu2 == 'm' || choixMenu2 == 'M') {
 
                } else if (choixMenu2 == 'r' || choixMenu2 == 'R') {
 
                } else if (choixMenu2 == 'p' || choixMenu2 == 'P') {
 
                }
            }
 
        }
 
    } // main
}
// Tp3Gr30