Bonjour,

Je suis débutante en Java et je l’étudie grâce à un cours en ligne.

Actuellement je bute sur un exercice et je ne vois pas où ça cloche
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
package dossierDuProjetPourCetExercice;
 
import java.util.Scanner;
 
class Cycliste {
 
    private static Scanner clavier = new Scanner(System.in);
 
    public static void main(String[] args) {
 
        double t = 0.0;    // temps, en min.
        double d = 0.0;    // distance, en km
        double v = 30.0;   // vitesse, en km/h
        double acc = 0.0;  // accélération, en km/h/min
        double p = 175.0;  // puissance, en W
 
        /******************************************
         * Completez le programme a partir d'ici.
         *******************************************/
 
        Scanner keyb = new Scanner(System.in);
 
                        // Les variables
        double masse;
        double vent;
        double distanceTotal;
        double d1;
        double penteMoyenneSommet;
        double penteMoyenneApresSommet;
        double DT = 1/60;
        double P_MIN = 10;
        double distanceParcourue = 0;
 
// Masse du cycliste
 
        do {
            System.out.print("masse du cycliste (entre 40 et 180 ) ? ");                     
             masse = keyb.nextInt();            
            }while (masse < 40 || masse > 180) ;   
 
// Vitesse du vent        
 
        do {            
            System.out.print("vent (entre -20 et +20 km/h) ? ");                      
             vent = keyb.nextDouble();            
            }while (vent < -20 || vent > 20) ;  
 
// Distance totale        
        do {
            System.out.print("distance du parcours (<= 200 km) ? ");                      
            distanceTotal = keyb.nextDouble();            
            }while (distanceTotal < 11 || distanceTotal > 200) ;
 
// Distance de la montée            
        do {
            System.out.print("distance au sommet du col (<= " + (distanceTotal-10)); 
            System.out.print(" km) ? ");    
            d1 = keyb.nextDouble();            
            }while (d1 < 10 || d1 > (distanceTotal-10)) ;
 
// Pente moyenne jusqu'au sommet        
        do {
            System.out.print("pente moyenne jusqu'au sommet (<= 20 %) ? ");                      
            penteMoyenneSommet = keyb.nextDouble();
            }while (penteMoyenneSommet <= 0 || penteMoyenneSommet > 20) ;
 
// Pente moyenne de la descente       
        do {
            System.out.print("pente moyenne après le sommet (<= 20 %) ? ");                   
            penteMoyenneApresSommet = keyb.nextDouble();
            }while (penteMoyenneApresSommet <= 0 || penteMoyenneApresSommet > 20) ;
 
 
// affichage des informations courantes
            System.out.format("%.0f, %.2f, %.2f, %.4f,  %.2f\n", t, d, v, acc, p);
 
 
                                // La montée    
 
        do {
            // Puissance du cycliste
            if ((d1>0) && p>P_MIN){
                p = p-(0.5*DT);
            }
 
            // Calcul du temps
            double t1 = (t+DT);
            t = t1;
 
            // Calcul de la distance
            double distanceAjout =distanceParcourue + (v*(DT/60));
            distanceParcourue = distanceAjout;
 
            //Calcul de la vitesse du vent
            double V;
            V = v - vent;
 
            // Calcul de l'acceleration
            acc = (-2118.96 * Math.sin (Math.atan (penteMoyenneSommet/100) ) - (5 *V * Math.abs((v) / masse)));
 
            if (p>0 && v>0){
                acc = acc + (777.6 * (p/(v * masse)));
            }
 
            if (Math.abs (acc) < 1e-5){
                acc = 0;        
            v = v + (acc*DT);
            }
 
 
            // Resultat
            if (v <= 3){
        System.out.println("## Bernard abandonne, il n'en peut plus");
        System.out.format("%.0f, %.2f, %.2f, %.4f, %.2f\n", t, d, v, acc, p);
            }
 
        double roundedTime = Math.round(t);    
        if (Math.abs(roundedTime - t) < 1e-5 && (int)roundedTime % 5 == 0) {
        System.out.format("%.0f, %.2f, %.2f, %.4f,  %.2f\n",t, d, v, acc, p); 
        } 
 
        }while(distanceParcourue>=d1);
         System.out.format("## Bernard a atteint le sommet en %.0f min.\n", t);
 
 
        /*******************************************
         * Ne rien modifier apres cette ligne.
         *******************************************/
 
         System.out.println("## Bernard est arrivé");
         System.out.format("%.0f, %.2f, %.2f, %.4f, %.2f\n", t, d, v, acc, p);
     }
}
Résultat :
masse du cycliste (entre 40 et 180 ) ? 50
vent (entre -20 et +20 km/h) ? 20
distance du parcours (<= 200 km) ? 50
distance au sommet du col (<= 40.0 km) ? 10
pente moyenne jusqu'au sommet (<= 20 %) ? 5
pente moyenne après le sommet (<= 20 %) ? 1
0, 0,00, 30,00, 0,0000,  175,00
0, 0,00, 30,00, -45,0958,  175,00
## Bernard a atteint le sommet en 0 min.
## Bernard est arrivé
0, 0,00, 30,00, -45,0958, 175,00
Je n'arrive pas à avoir le temps jusqu'au sommet et les indications toutes les 5 mm

Quelqu'un saurait-il m'indiquer comment faire ?

Merci d'avance pour votre aide.