Bonjour

Est-ce que vous pouvez m'aider avec les méthodes qui en utilisent d'autres, qui en utilisent d'autres, (etc.), je ne suis pas sûr d'avoir bien compris comment faire

J'ai un projet avec l'école où il faut entrer une dimension de pneu et une saison et avec celles-ci on obtient un prix unitaire.
On rentre après un nombre X de pneus à acheter.
Avec le prix unitaire et le nombre de pneus on obtient un sous total.
Il y a un rabais si on achète un certain nombre de pneus.

Et c'est à partir d'ici que ça marche pu hahahha:

il y a une méthode sous total rabais, qui est sensée prendre le montant du sous total et enlever le rabais (si jamais le rabais s'applique).
y a la méthode des taxes qui est sensée prendre le sous total avec le rabais et calculer les taxes.
et la méthode du montant total qui additionne le sous total et les taxes ensemble.

Je ne cherche pas que vous faissiez le code pour moi, je veux le faire! Mais j'aimerais juste comprendre comment faire comprendre à ma méthode X que la valeur retournée dans la méthode Y, qui a retournée une méthode utilisée dans une méthode Z, sera utilisée dans la méthode X.

Je sais vrm pas si je suis clair :/ je vous laisse le code ci-dessus, merci encore!
Je peux clarifier si jamais!

Merci de m'expliquer comment bien utiliser les "return" et les paramètres dans les méthodes! J'ai vu qqs exemples sur Internet, mais quand c'est aussi compliqué et empilé comme dans ce devoir je ne comprends plus ahahaha

---

Toutes les méthodes marchent individuellement, mais je ne comprend pas comment les "lier". Voici ce que j'ai fait:

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
 
//3. on calcule (et retourne) le sous total de la facture, en fonction du prix unitaire du modèle choisit et du nombre de pneus demandés
    public static double calculSoustotal (double calculPrixUnitaire, int nombrePneus){
        double calculSoustotal = calculPrixUnitaire*nombrePneus;
        return calculSoustotal;}
 
    //4. on retourne le diamètre de la jante présent dans la dimension du pneu
    public static String extraireDiametreJate (String dimensionPneu){
        String diametreJante = dimensionPneu.substring(7,9);
        return diametreJante;}
 
        //#5
 
    //6. on calcule (et retourne) le rabais dans la facture en fonction du nombre de pneus achetés
    public static double rabais (String extraireDiametreJate, int nombrePneus){
rabais = 1;
        if ("14".equals(extraireDiametreJate) || "15".equals(extraireDiametreJate)){
            if (nombrePneus > 4){
                rabais = 0.15;}}
        if ("16".equals(extraireDiametreJate)){
            if (nombrePneus > 6){
                rabais = 0.10;}}
        return rabais;}
 
    //7. on calcule (et retourne) le montant du rabais à enlever de la facture 
    public static double calculRabais (double rabais, double calculSoustotal){
        double montantRabais = calculSoustotal*rabais;
        return montantRabais;}
 
    //8. on calcule (et retourne) le sous total de la facture en enlevant le rabais de celle-ci
    public static double calculRabaisSousTotal (double calculRabais, double calculSoustotal){
        double sousTotalRabais = calculSoustotal - montantRabais;
        return sousTotalRabais;}
 
    //9. on calcule (et retourne) le montant du prix de l'installation en fonction du nombre de pneus à installer
    public static double calculSoutTotalInstallation (double prixInstallation, int pneusInstaller){
        double sousTotalInstallation = prixInstallation*pneusInstaller;
        return sousTotalInstallation;}
 
    //10. on calcule (et retourne) le sous total de la facture en comptant le montant de pneus achetés et installés
    public static double calculSousTotalTotal (double calculRabaisSousTotal, double calculSoutTotalInstallation){
        double sousTotalTotal = calculRabaisSousTotal + calculSoutTotalInstallation;
        return sousTotalTotal;}
 
    //11. on calcule (et retourne) le montant de la taxe TPS en fonction du sous total calculé
    public static double taxeTps (double calculSousTotalTotal){
        double taxeTps = calculSousTotalTotal + (calculSousTotalTotal*TAXE_TPS);
        return taxeTps;}
 
    //12. on calcule (et retourne) le montant de la taxe TVQ en fonction du sous total calculé
    public static double taxeTvq (double calculSousTotalTotal){
        double taxeTvq = calculSousTotalTotal + (calculSousTotalTotal*TAXE_TVQ);
        return taxeTvq;}
 
    //13. on calcule (et retourne) le montant total de la facture en additionant le sous total et les deux taxes
    public static double montantTotal (double calculSousTotalTotal, double taxeTps, double taxeTvq){
        return montantTotal;}
et après quand je l'affiche ça ne marche jamais

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
 
//18 (extra). on affiche le message de félicitation s'il y a un rabais
    public static String messageRabais(double calculRabais){
        if (calculRabais >0){
            messageRabais = "-------------------------------------------------------- \n" +
            "Wow, vous avez économisé un total de $ " + calculRabais;
            System.out.println(messageRabais);}
        return messageRabais;   
    }
    //19 (extra). on affiche la facture du rabais
    public static String factureRabais(double calculSoustotal, double calculRabaisSousTotal){
        if (calculRabaisSousTotal != calculSoustotal){
            factureRabais = "Sous-total sans rabais: $" + calculSoustotal + "\n" +
            "Sous-total avec rabais: $" + calculRabaisSousTotal + "\n";
        }else if(calculRabaisSousTotal == calculSoustotal){
            factureRabais = "Sous-total: $" + calculSoustotal;
        }
        return factureRabais;   
    }
    //3.4
    //0 (extra). affichage de l'entête de la facture
    public static String enteteFacture(int numeroFacture, String dateHeure){
        enteteFacture = "Experts-Pneus \n"+
        "Date et heure: " + dateHeure() + "Facture No : " + numeroFacture() + "\n" +
        "2020 rue Hakuna, Matata, QC                     (450) 515 - 0055 \n" +
        "----------------------------------------------- \n" +
        "Description                     Nombre de pneus               Prix unitaire \n";
 
        return enteteFacture;
    }
    //1. on affiche la facture de la vente de pneus (option 1 du menu principal)
    public static void affichageFactureVente(String enteteFacture, String factureRabais, String messageRabais, String dimensionPneu, int nombrePneus, double calculPrixUnitaire, double taxeTps, double taxeTvq, double montantTotal){
        enteteFacture(numeroFacture, dateHeure);
        System.out.println(dimensionPneu + "            " + nombrePneus + "            $" + calculPrixUnitaire);
        System.out.println("");
        System.out.print(factureRabais);
        System.out.println("Montant TPS : $" + taxeTps + "\n" +
            "Montant TVQ : $" + taxeTvq + "\n" +
            "Montant total : $" + montantTotal + "\n" +
            " \n");
        System.out.print(messageRabais);
        System.out.println("--------------------------------------- \n"+
            "Merci pour votre confiance \n");
    }
pis je mets tout ça dans la méthode main:

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
 
 //méthode main où toutes les fonctions sont utilisées
    public static void main (String[] params) {
        messageBienvenue();
        resumeProgramme();
        do{
            menuPrincipal();
            choixMenuPrincipal = choixMenu();
            if (choixMenuPrincipal == 1){
                saisonUtilisation  = saisonUtilisation();
                dimensionPneu  = dimensionPneu();
                nombrePneus = nombrePneus();
                System.out.println("Désirez-vous entrer une nouvelle facture?");
                affichage1 = 1;
            }else if( choixMenuPrincipal == 2){
                do{
                    menuInstallation();
                    choixMenuInstallation = choixMenuInstallation();
                    if (choixMenuInstallation == 1){
                        pneusInstaller = nombrePneusInstaller();
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
 
                    }else if(choixMenuInstallation==2){
                        pneusInstaller = nombrePneusInstaller();                
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
                    }
                }while (choixMenuInstallation != 0);
            }else if( choixMenuPrincipal == 3){
                saisonUtilisation  = saisonUtilisation();
                dimensionPneu  = dimensionPneu();
                nombrePneus = nombrePneus();
                affichage1 = 1;
 
                do{
                    menuInstallation();
                    choixMenuInstallation = choixMenuInstallation();
                    if (choixMenuInstallation == 1){
                        pneusInstaller = nombrePneusInstaller();
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
 
                    }else if(choixMenuInstallation==2){
                        pneusInstaller = nombrePneusInstaller();                
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
 
                    }
                }while (choixMenuInstallation != 0);
            }else if( choixMenuPrincipal == 4){ //## a entender##
                affichageFacture(dateHeure(), dimensionPneu, nombrePneus);
            }
        } while(choixMenuPrincipal !=0);
 
        if (affichage1 > 0 && affichage2 == 0){
            affichageFactureVente(enteteFacture(numeroFacture(), dateHeure()), factureRabais(calculSoustotal(calculPrixUnitaire(dimensionPneu, saisonUtilisation), nombrePneus), calculRabaisSousTotal(montantRabais, calculSoustotal)), messageRabais(calculRabais(rabais, calculSoustotal)),dimensionPneu, nombrePneus, calculPrixUnitaire(dimensionPneu, saisonUtilisation), taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal), montantTotal(calculSousTotalTotal, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal)));
        }
        else if(affichage1 == 0 && affichage2 > 0){
            affichageFactureInstallation(factureRabais, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal), montantTotal(calculSousTotalTotal, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal)), enteteFacture, descriptionInstallationPneu(choixMenuInstallation), calculPrixInstallation(choixMenuInstallation), pneusInstaller);
        }else if(affichage1 > 0 && affichage2 > 0){
            affichageFactureDouble(factureRabais, messageRabais, enteteFacture, dimensionPneu, descriptionInstallationPneu(choixMenuInstallation), calculPrixInstallation(choixMenuInstallation), nombrePneus, pneusInstaller, calculPrixUnitaire(dimensionPneu, saisonUtilisation), calculSoustotal(calculPrixUnitaire(dimensionPneu, saisonUtilisation), nombrePneus), calculRabaisSousTotal(montantRabais, calculSoustotal), calculRabais, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal), montantTotal(calculSousTotalTotal, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal)));
        }
 
    }
si jamais vous voulez tout le code pour mieux voir le voici, la classe Clavier c'est une classe Scanner obligatoire dans notre uni:
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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
 
public class Tp2Inf1120Grpe21A2019 {
    //declaration de variables et constantes
    public static String dimensionPneu = "";
    public static String saisonUtilisation = "";
    public static int choixMenuInstallation;
    public static int choixMenuPrincipal;
    public static double prixUnitaire;
    public static int nombrePneus;
    public static String diametreJante; //##inutile??
    public static double rabais = 1;
    public static double calculSoustotal;
    public static double montantRabais;
    public static double prixInstallation;
    public static int pneusInstaller;
    public static double calculSousTotalInstallation;
    public static double calculSousTotalTotal;
    public static final double TAXE_TPS = 0.05;
    public static final double TAXE_TVQ = 0.09975;
    public static double calculRabais;
    public static int numeroFacture = 0;
    public static String dateHeure;
    public static int choix;
    public static String descriptionInstallation = "";
    public static String messageRabais = "";
    public static String factureRabais = "";
    public static String enteteFacture = "";
    public static int affichage1 = 0;
    public static int affichage2 = 0;
    public static int affichage3 = 0;
    public static double calculPrixUnitaire;
 
    //3.2
    //1. message de bienvenue
    public static void messageBienvenue(){
        System.out.println("Bienvenue au programme de compilation de facture de Experts-pneus.");}
    //2.resumé du programme
    public static void resumeProgramme(){
        System.out.println("Sous peu, vous allez pouvoir générer des factures pour vos achats de pneus. \n" +
            "On vous demandera d’entrer la saison d’utilisation de vos pneus, le diamètre \n" +
            "de la jante, la longueur du pneu, le numéro de série de celui-ci ainsi que \n" +
            "la quantité désirée. Finalement, une facture vous sera affichée. Bons achats.");
    }
    //3. menu principal
    public static void menuPrincipal(){
        System.out.println(" 0: Quitter \n" +
            " 1: Vente de pneus \n" +
            " 2: Installation de pneus \n" +
            " 3: Vente et installation de pneus \n" +
            " 4: Nombre de pneus vendus selon la dimension de pneus \n"+
            " \n");
    }
    //4. choix du menu, on choisit l'un de cinq menus possibles et on retourne le choix
    public static int choixMenu(){
        do{
            System.out.println("Veuillez sélectionner une option de menu valide");
            choix = Clavier.lireIntLn();
 
            if (choix > 4 || choix < 0){
                System.out.println("Choix de menu principal invalide!");
            }
        } while (choix > 4 || choix < 0);
        return choix;
    }
    //5. saisie de la saison d'utilisation, on saisit la saison d'utilisation et on la retourne
    public static String saisonUtilisation(){
        do{
            System.out.println("Veuillez choisir une saison (H ou h pour hiver, E ou e pour été)");
            saisonUtilisation = Clavier.lireString();
            saisonUtilisation = saisonUtilisation.substring(0,1).toUpperCase();
            if (!"H".equals(saisonUtilisation) && !"E".equals(saisonUtilisation)){
                System.out.println("Saison d’utilisation des pneus invalide!");
            }
        }while (!"H".equals(saisonUtilisation) && !"E".equals(saisonUtilisation));
 
        return saisonUtilisation;
    }
    //6. saisie de la dimension du pneu, on saisit la dimension désirée, si le modèle (000/00R00) n'est pas respecté on affiche erreur, 
    //et si la dimension n'existe pas on l'affiche aussi. On retourne la dimension du pneu
    public static String dimensionPneu(){
        boolean pasSortir = true;
        do{
            System.out.println("Veuillez écrire une dimension de pneu de cette forme: \n" +
                "largeur du pneu + / + serie du pneu + R + diamètre de la jante. \n" +
                "Par exemple, 175/65R14");
            dimensionPneu = Clavier.lireString();
            int longueur = dimensionPneu.length();
 
            if(longueur == 9){
 
                char slash = dimensionPneu.charAt(3);
                char r = dimensionPneu.charAt(6);
                String largeurPneu = dimensionPneu.substring(0,3);
                String seriePneu = dimensionPneu.substring(4,6);
                String diametreJante = dimensionPneu.substring(7,9);
 
                if (slash == '/' && r == 'R'){                                      
 
                    if ("175".equals(largeurPneu)){                                     
 
                        if ("65".equals(seriePneu)){                                       
 
                            if ("14".equals(diametreJante) || "15".equals(diametreJante)){        
 
                                return dimensionPneu;
                            }else{System.out.println("Cette dimension du pneu n’existe pas dans notre entrepôt!");}
 
                        }else if("185".equals(largeurPneu)){
                            if ("65".equals(seriePneu)){
                                if ("15".equals(diametreJante)){
                                    return dimensionPneu;
 
                                }else{System.out.println("Cette dimension du pneu n’existe pas dans notre entrepôt!");}
 
                            }else if("215".equals(largeurPneu)){
                                if ("65".equals(seriePneu)){
                                    if ("16".equals(diametreJante)){
                                        return dimensionPneu;
                                    }else if ("70".equals(seriePneu)){
                                        if ("16".equals(diametreJante)){
                                            return dimensionPneu;
 
                                        }else{System.out.println("Cette dimension du pneu n’existe pas dans notre entrepôt!");}
 
                                    } else if ("225".equals(largeurPneu)){
                                        if ("70".equals(seriePneu)){
                                            return dimensionPneu;
 
                                        }else{System.out.println("Cette dimension du pneu n’existe pas dans notre entrepôt!");}
 
                                    }else{ 
                                        System.out.println("Cette dimension du pneu n’existe pas dans notre entrepôt!");}
 
                                }else{ System.out.println("Format de la dimension invalide!");}
                            }}}}
 
            }else{System.out.println("Format de la dimension invalide!");}
 
        }while (pasSortir);
        return dimensionPneu;
    }
    //7. on saisit le nombre de pneus désirées entre 1 et 16, on retourne ce même nombre
    public static int nombrePneus(){
        do{
            System.out.println("Veuillez écrire le nombre de pneus que vous voulez acheter, entre 1 et 16");
            nombrePneus = Clavier.lireIntLn();
 
            if (nombrePneus < 1 || nombrePneus > 16){
                System.out.println("Nombre de pneus non valide");
            }
        }while (nombrePneus < 1 || nombrePneus > 16);
        return nombrePneus;
    }
    //8. affichage du menu d'installation de pneus
    public static void menuInstallation(){
        System.out.println(" 0: Quitter \n" +
            " 1: Installation des pneus montés sur jantes \n" +
            " 2: Installation des pneus non montés sur jantes\n" +
            " \n");
    }
    //9. choix du menu d'installation de pneus, on choisit entre les trois options et on retourne le choix fait
    public static int choixMenuInstallation(){
        do{
            System.out.println("Veuillez sélectionner une option de menu valide");
            choixMenuInstallation = Clavier.lireIntLn();
 
            if (choixMenuInstallation > 2 || choixMenuInstallation < 0){
                System.out.println("Choix de menu non valide");
            }
        } while (choixMenuInstallation > 2 || choixMenuInstallation < 0);
        return choixMenuInstallation;
    }
    //10. on saisit le nombre de pneus à installer, on doit les saisir entre 1 et 20. On retourne le choix effectué
    public static int nombrePneusInstaller(){
        do{
            System.out.println("Veuillez écrire le nombre de pneus que vous voulez installer, entre 1 et 20"); 
            pneusInstaller = Clavier.lireIntLn();
            if (pneusInstaller < 1 || pneusInstaller > 20){
                System.out.println("Nombre de pneus non valide");
            }
        }while (pneusInstaller < 1 || pneusInstaller > 20);                           
        return pneusInstaller;
    }
    //3.3
    //1. on calcule (et retourne) le prix unitaire du modèle de pneu voulu en fonction de sa dimension et de la saison d'utilisation choisie
    public static double calculPrixUnitaire (String dimensionPneu, String saisonUtilisation){
        if ("H".equals(saisonUtilisation)){
            switch (dimensionPneu){
                case "175/65R14" : prixUnitaire = 131.60;
                break;
                case "175/65R15" : prixUnitaire = 148.50;
                break;
                case "185/65R15" : prixUnitaire = 141.35;
                break;
                case "215/70R16" : prixUnitaire = 177.10;
                break;
                case "215/65R16" : prixUnitaire = 182.15;
                break;
                case "225/70R16" : prixUnitaire = 181.95;
                break;
                default :
                break;
            }
        }else if ("E".equals(saisonUtilisation)){
            switch (dimensionPneu){
                case "175/65R14" : prixUnitaire = 110.95;
                break;
                case "175/65R15" : prixUnitaire = 120.95;
                break;
                case "185/65R15" : prixUnitaire = 125.95;
                break;
                case "215/70R16" : prixUnitaire = 150.95;
                break;
                case "215/65R16" : prixUnitaire = 159.95;
                break;
                case "225/70R16" : prixUnitaire = 160.95;
                break;
                default :
                break;
            }
        }        return prixUnitaire; 
    }
    //2. on calcule (et retourne) le prix d'installation des pneus à installer en fonction du choix dans le menu d'installation
    public static double calculPrixInstallation (int choixMenuInstallation){
        if (choixMenuInstallation == 1){
            prixInstallation = 9.95;
        }else if (choixMenuInstallation == 2){
            prixInstallation = 15.95;
        }
        System.out.println("Calcul prix installation :" + prixInstallation); //###
        return prixInstallation;
    }
    //3. on calcule (et retourne) le sous total de la facture, en fonction du prix unitaire du modèle choisit et du nombre de pneus demandés
    public static double calculSoustotal (double calculPrixUnitaire, int nombrePneus){
        double calculSoustotal = calculPrixUnitaire*nombrePneus;
                System.out.println("Calcul sousTotal :" + calculSoustotal + "est egal à prix unitaire: " + calculPrixUnitaire + "fois nb de pneus " + nombrePneus); //###
 
        return calculSoustotal;}
    //4. on retourne le diamètre de la jante présent dans la dimension du pneu
    public static String extraireDiametreJate (String dimensionPneu){
        String diametreJante = dimensionPneu.substring(7,9);
                System.out.println("Extraction du diametre de la jante : " + diametreJante); //###
 
        return diametreJante;}
 
        //#5
 
    //6. on calcule (et retourne) le rabais dans la facture en fonction du nombre de pneus achetés
    public static double rabais (String extraireDiametreJate, int nombrePneus){
        System.out.println(extraireDiametreJate);
        if ("14".equals(extraireDiametreJate) || "15".equals(extraireDiametreJate)){
            if (nombrePneus > 4){
                rabais = 0.15;}}
        if (diametreJante == "16"){
 
            if (nombrePneus > 6){
 
                rabais = 0.10;}}
                                System.out.println("Rabais en fnct de lextraction : " + rabais); //###
 
        return rabais;}
 
    //7. on calcule (et retourne) le montant du rabais à enlever de la facture 
    public static double calculRabais (double rabais, double calculSoustotal){
        double montantRabais = calculSoustotal*rabais;
            rabais ("14", 7);
            extraireDiametreJate (dimensionPneu); //#####
        System.out.println("calcul rabais = calcul sous total * rabais : " + montantRabais + " sous total " + calculSoustotal + " fois rabais " + rabais); //#####
        return montantRabais;}
 
    //8. on calcule (et retourne) le sous total de la facture en enlevant le rabais de celle-ci
    public static double calculRabaisSousTotal (double calculRabais, double calculSoustotal){
        calculRabais (rabais, calculSoustotal);
        calculSoustotal (calculPrixUnitaire, nombrePneus);
        double sousTotalRabais = calculSoustotal - montantRabais;
        System.out.println("calcul rabais TOTAL = calcul sous total MOINS rabais : " + sousTotalRabais + " sous total " + calculSoustotal + " moins rabais " + rabais); //#####
 
 
        return sousTotalRabais;}
    //9. on calcule (et retourne) le montant du prix de l'installation en fonction du nombre de pneus à installer
    public static double calculSoutTotalInstallation (double prixInstallation, int pneusInstaller){
        double sousTotalInstallation = prixInstallation*pneusInstaller;
        System.out.println("calcul sous total installation = prix installation fois pneus installer : " + sousTotalInstallation + " prix installation " + prixInstallation + " pneus a installer " + pneusInstaller); //#####
 
        return sousTotalInstallation;}
    //10. on calcule (et retourne) le sous total de la facture en comptant le montant de pneus achetés et installés
    public static double calculSousTotalTotal (double calculRabaisSousTotal, double calculSoutTotalInstallation){
        double sousTotalTotal = calculRabaisSousTotal + calculSoutTotalInstallation;
        System.out.println("calcul total total = rabais sous total PLUS sous total installation : " + sousTotalTotal + " rabais sous total " + calculRabaisSousTotal + " sous total installation " + calculSoutTotalInstallation); //#####
 
 
        return sousTotalTotal;}
    //11. on calcule (et retourne) le montant de la taxe TPS en fonction du sous total calculé
    public static double taxeTps (double calculSousTotalTotal){
        double taxeTps = calculSousTotalTotal + (calculSousTotalTotal*TAXE_TPS);
                System.out.println("calcul taxe tps = calcul sous total total plus (sous total total FOIS taxe) : " + taxeTps + " rabais sous total total " + calculSousTotalTotal + " calcul sous total total * taxe tps " + (calculSousTotalTotal*TAXE_TPS)); //#####
 
        return taxeTps;}
    //12. on calcule (et retourne) le montant de la taxe TVQ en fonction du sous total calculé
    public static double taxeTvq (double calculSousTotalTotal){
        double taxeTvq = calculSousTotalTotal + (calculSousTotalTotal*TAXE_TVQ);
                        System.out.println("calcul taxe tvq = calcul sous total total plus (sous total total FOIS taxe) : " + taxeTvq + " rabais sous total total " + calculSousTotalTotal + " calcul sous total total * taxe tvq " + (calculSousTotalTotal*TAXE_TVQ)); //#####
 
        return taxeTvq;}
    //13. on calcule (et retourne) le montant total de la facture en additionant le sous total et les deux taxes
    public static double montantTotal (double calculSousTotalTotal, double taxeTps, double taxeTvq){
        double montantTotal = calculSousTotalTotal + taxeTps + taxeTvq;
                System.out.println("montant total = sous total total plus taxes : " + montantTotal + " calculSousTotalTotal " + calculSousTotalTotal + " taxes tps tvq " + taxeTps + " " + taxeTvq); //#####
 
        return montantTotal;}
    //14. on calcule (et retourne) la date et l'heure du système au moment de l'achat
    public static String dateHeure(){
        LocalDateTime dateHeureSysteme = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
        String dateHeure = dateHeureSysteme.format(formatter);
        return dateHeure;}
    //15. on définit la description détaillée du pneu en fonction de sa dimension et de la saison saisie, on retourne cette description
    public static String descriptionPneu (String dimensionPneu, String saisonUtilisation){
        if (saisonUtilisation == "H"){
            saisonUtilisation = "Hiver";
        }else if (saisonUtilisation == "E"){
            saisonUtilisation = "Été";
        }
        String diametreJante = dimensionPneu.substring(7,8);
        String descriptionPneu = dimensionPneu + " – Pneu " + saisonUtilisation + " de " + diametreJante + "  pouces.";
        return descriptionPneu;   
    }
    //16. on définit la description de l'installation des pneus en fonction du choix de menu d'installation, on retourne cette description
    public static String descriptionInstallationPneu (int choixMenuInstallation){
        if (choixMenuInstallation == 1){
            descriptionInstallation = "Installation de pneus montés sur jantes";
        }else if (choixMenuInstallation == 2){
            descriptionInstallation = "Installation de pneus non montés sur jantes";
        }
        return descriptionInstallation;   
    }
    //17 (extra). on calcule le numéro de la facture
    public static int numeroFacture (){
        return numeroFacture;}
    //18 (extra). on affiche le message de félicitation s'il y a un rabais
    public static String messageRabais(double calculRabais){
        if (calculRabais >0){
            messageRabais = "-------------------------------------------------------- \n" +
            "Wow, vous avez économisé un total de $ " + calculRabais;
            System.out.println(messageRabais);}
            System.out.println("calcul rabais das string message rabais : " + calculRabais); //##########
        return messageRabais;   
    }
    //19 (extra). on affiche la facture du rabais
    public static String factureRabais(double calculSoustotal, double calculRabaisSousTotal){
        if (calculRabaisSousTotal != calculSoustotal){
            factureRabais = "Sous-total sans rabais: $" + calculSoustotal + "\n" +
            "Sous-total avec rabais: $" + calculRabaisSousTotal + "\n";
        }else if(calculRabaisSousTotal == calculSoustotal){
            factureRabais = "Sous-total: $" + calculSoustotal;
        }
        System.out.println("FACTURE RABAIS " + calculRabaisSousTotal + " c t rabais sous total, et mtn sous total : " + calculSoustotal); //#####
        return factureRabais;   
    }
    //3.4
    //0 (extra). affichage de l'entête de la facture
    public static String enteteFacture(int numeroFacture, String dateHeure){
        enteteFacture = "Experts-Pneus \n"+
        "Date et heure: " + dateHeure() + "Facture No : " + numeroFacture() + "\n" +
        "2020 rue Hakuna, Matata, QC                     (450) 515 - 0055 \n" +
        "----------------------------------------------- \n" +
        "Description                     Nombre de pneus               Prix unitaire \n";
 
        return enteteFacture;
    }
    //1. on affiche la facture de la vente de pneus (option 1 du menu principal)
    public static void affichageFactureVente(String enteteFacture, String factureRabais, String messageRabais, String dimensionPneu, int nombrePneus, double calculPrixUnitaire, double taxeTps, double taxeTvq, double montantTotal){
        enteteFacture(numeroFacture, dateHeure);
        System.out.println(dimensionPneu + "            " + nombrePneus + "            $" + calculPrixUnitaire);
        System.out.println("");
        System.out.print(factureRabais);
        System.out.println("Montant TPS : $" + taxeTps + "\n" +
            "Montant TVQ : $" + taxeTvq + "\n" +
            "Montant total : $" + montantTotal + "\n" +
            " \n");
        System.out.print(messageRabais);
        System.out.println("--------------------------------------- \n"+
            "Merci pour votre confiance \n");
    }
 
    //2. on affiche la facture de l'installation de pneus (option 2 du menu principal)
    public static void affichageFactureInstallation(String factureRabais, double taxeTps, double taxeTvq, double montantTotal, String enteteFacture, String descriptionInstallationPneu, double calculPrixInstallation, int nombrePneusInstaller){
        System.out.println(enteteFacture);
        System.out.println(descriptionInstallationPneu + nombrePneusInstaller + " $" + calculPrixInstallation);
        System.out.println("");
        System.out.print(factureRabais);
        System.out.println("Montant TPS : $" + taxeTps + "\n" +
            "Montant TVQ : $" + taxeTvq + "\n" +
            "Montant total : $" + montantTotal + "\n" +
            " \n");
        System.out.println("--------------------------------------- \n"+
            "Merci pour votre confiance \n");
    }
    //3. on affiche la facture de la vente et de l'installation de pneus (option 3 du menu principal)
    public static void affichageFactureDouble (String factureRabais, String messageRabais, String enteteFacture, String dimensionPneu, String descriptionInstallationPneu, double calculPrixInstallation, int nombrePneus, int nombrePneusInstaller, double calculPrixUnitaire, double calculSousTotal, double calculRabaisSousTotal, double calculRabais, double taxeTps, double taxeTvq, double montantTotal){
        String entete = enteteFacture;
        String dimension = dimensionPneu;
        int nombre = nombrePneus;
        double prixUnit = calculPrixUnitaire;
 
        System.out.print(enteteFacture);
        System.out.println(dimension + nombre + " $" + prixUnit);
        System.out.println(descriptionInstallationPneu + nombrePneusInstaller + " $" + calculPrixInstallation);
        System.out.println("");
        System.out.print(factureRabais);
        System.out.println("Montant TPS : $" + taxeTps + "\n" +
            "Montant TVQ : $" + taxeTvq + "\n" +
            "Montant total : $" + montantTotal + "\n" +
            " \n");
        System.out.print(messageRabais);
        System.out.println("--------------------------------------- \n"+
            "Merci pour votre confiance \n");
    }
    //4. on affiche le nombre de pneus selon leur dimension
    public static void affichageFacture(String dateHeure, String dimensionPneu, int nombrePneus){
        System.out.println("Experts-Pneus");
        System.out.println("Date et heure: " + dateHeure());
        System.out.println("Dimension               Nombre de pneus vendus");
        System.out.println(); //###a entender, afichar 6 ultimos
    }
 
    //méthode main où toutes les fonctions sont utilisées
    public static void main (String[] params) {
        messageBienvenue();
        resumeProgramme();
        do{
            menuPrincipal();
            choixMenuPrincipal = choixMenu();
            if (choixMenuPrincipal == 1){
                saisonUtilisation  = saisonUtilisation();
                dimensionPneu  = dimensionPneu();
                nombrePneus = nombrePneus();
                System.out.println("Désirez-vous entrer une nouvelle facture?");
                affichage1 = 1;
            }else if( choixMenuPrincipal == 2){
                do{
                    menuInstallation();
                    choixMenuInstallation = choixMenuInstallation();
                    if (choixMenuInstallation == 1){
                        pneusInstaller = nombrePneusInstaller();
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
 
                    }else if(choixMenuInstallation==2){
                        pneusInstaller = nombrePneusInstaller();                
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
                    }
                }while (choixMenuInstallation != 0);
            }else if( choixMenuPrincipal == 3){
                saisonUtilisation  = saisonUtilisation();
                dimensionPneu  = dimensionPneu();
                nombrePneus = nombrePneus();
                affichage1 = 1;
 
                do{
                    menuInstallation();
                    choixMenuInstallation = choixMenuInstallation();
                    if (choixMenuInstallation == 1){
                        pneusInstaller = nombrePneusInstaller();
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
 
                    }else if(choixMenuInstallation==2){
                        pneusInstaller = nombrePneusInstaller();                
                        System.out.println("Désirez-vous entrer une nouvelle facture?");
                        affichage2 = 1;
 
                    }
                }while (choixMenuInstallation != 0);
            }else if( choixMenuPrincipal == 4){ //## a entender##
                affichageFacture(dateHeure(), dimensionPneu, nombrePneus);
            }
        } while(choixMenuPrincipal !=0);
 
        if (affichage1 > 0 && affichage2 == 0){
            affichageFactureVente(enteteFacture(numeroFacture(), dateHeure()), factureRabais(calculSoustotal(calculPrixUnitaire(dimensionPneu, saisonUtilisation), nombrePneus), calculRabaisSousTotal(montantRabais, calculSoustotal)), messageRabais(calculRabais(rabais, calculSoustotal)),dimensionPneu, nombrePneus, calculPrixUnitaire(dimensionPneu, saisonUtilisation), taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal), montantTotal(calculSousTotalTotal, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal)));
        }
        else if(affichage1 == 0 && affichage2 > 0){
            affichageFactureInstallation(factureRabais, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal), montantTotal(calculSousTotalTotal, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal)), enteteFacture, descriptionInstallationPneu(choixMenuInstallation), calculPrixInstallation(choixMenuInstallation), pneusInstaller);
        }else if(affichage1 > 0 && affichage2 > 0){
            affichageFactureDouble(factureRabais, messageRabais, enteteFacture, dimensionPneu, descriptionInstallationPneu(choixMenuInstallation), calculPrixInstallation(choixMenuInstallation), nombrePneus, pneusInstaller, calculPrixUnitaire(dimensionPneu, saisonUtilisation), calculSoustotal(calculPrixUnitaire(dimensionPneu, saisonUtilisation), nombrePneus), calculRabaisSousTotal(montantRabais, calculSoustotal), calculRabais, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal), montantTotal(calculSousTotalTotal, taxeTps(calculSousTotalTotal), taxeTvq(calculSousTotalTotal)));
        }
 
    }
 
}