Je ne trouve pas mon erreur.
Merci à l'avance.
Je ne trouve pas mon erreur.
Merci à l'avance.
1) du code, et pas juste un screenshot de ton IDE qui ne nous sert à rient
2) Tu fais "entée entrée" où?
3) Tout plante: voilà un message d'erreur bien clair, mais ce qui qui serait encore plus claire c'est que tu nous décrive ce qui se passe et les message d'erreur que tu obtiens.
Essaie un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 catch(NumberFormatException ex){ ex.getStackTrace(); // ça trouve des erreurs }finally { check = false; }
Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0 at java.lang.String.charAt(String.java:646) at pkgtp1.Tp1.main(Tp1.java:154) Java Result: 1
Ben dans ce code tu vérifie que la première lettre est un F, H ou autre, mais nulle part tu ne commence par vérifier si il y a au moins un lettre (bref si l'input n'est pas vide). Comment par vérifier cela.
Pour les commentaires sur le code, commence par le mettre dans des balises code du forum, qu'on aie une indentation, c'est illisible là
Merci je m'excuse. Je vais le faire tout de suite
Avec le balises code, pas quote
Comme ça
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 /* * Calculateur d'IMC et d'IMG * Gabriel Perno * 20 octobre 2014 */ package pkgtp1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @author Gabriel */ public class Tp1 { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { /* String input = System.console().readLine(); Integer.parseInt(input); Double.parseDouble(input); */ String c;// variable entrez au clavier soit 1 ou 2 String value;// variable entrez sois F, f ou H, h double r;// variable IMC double q;// variable IMG double t;// variable pour taille double p;// variable pour poids int a;// variable pour age BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); boolean execute_whole_prog = false; do { q = 0;// variable IMG t = 0;// variable pour taille p = 0;// variable pour poids a = 0;// variable pour age System.out.println("Bienvenue dans le calculateur << IMC,IMG >>"); System.out.println("Entrez votre prenom"); String read = input.readLine(); boolean check; do {// c'est le début de la boucle System.out.println("Entrez votre poids positif en kilogramme"); String line = input.readLine(); try { p = Double.parseDouble(line); if (p < 0) {//c'est une condition qui dit que la valeur entre doit etre plus grande que 0. System.out.println("Entrez un poids qui n'est pas negatif"); check = false; } else { check = true; } } catch (NumberFormatException ex) // c'est pour les exeptions par exemple toute les valeur qui ne sont pas un chiffre ou un nombre quand on le rentrer est traiter et indentifier comme une valeur qui ne respect pas la condition pour etre accepte. { check =false; System.out.println("Des kilogrammes svp... o_O"); } } while (!check);// Boucle doit respecter les conditions pour continuer do { System.out.println("Entrez votre age entre 18 et 65 ans"); String line = input.readLine(); try { a = Integer.parseInt(line); if (a >= 18 && a <= 65) { check = true; } else { System.out.println("Entrez un age entre 18 et 65 ans svp... -_-"); check = false; } } catch (NumberFormatException ex) { check = false; System.out.println("Un age svp... o_O"); } } while (!check);// Boucle doit respecter les conditions pour continuer do { System.out.println("Entrez votre taille en mètre entre 0 et 2.10 --Utiliser un point car les virgules ne sont pas acceptee."); String line = input.readLine(); try { t = Double.parseDouble(line); if (t >= 0 && t <= 2.10) { System.out.println("Entrez votre taille en metre entre 0 et 2.10!!"); check = true; } else { check = false; } } catch (NumberFormatException ex) { check = false; System.out.println("Une taille svp... o_O"); } } while (!check);// Boucle doit respecter les conditions pour continuer do { System.out.println("Que voulez-vous calculer 1.IMC ou 2.IMG"); System.out.println("Entrez votre choix(1 ou 2)"); c = input.readLine(); try { if (c.equals("1")) { check = true; } else if (c.equals("2")) { System.out.println("Entre sois le chiffre 1 ou 2 "); check =true; } else { check = false; } } catch (NumberFormatException ex) { check = false; System.out.println("Le chiffre 1 ou 2 svp :)"); } } while (!check);// Boucle doit respecter les conditions pour continuer System.out.println("choix=" + c); r = p / (t * t);// formule pour calculer l'IMC switch (c) {// Pour envoyer sois dans le calcule de IMC ou IMG dependant de sont choix. case "1": {// s'il a choisit le 1 pour calculer sont IMC double d = Math.round(100d * r) / 100d;// garder seulement 2 chiffre apres la virgule seulement. System.out.println("Votre IMC est : " + d); // les messages suivant sont afficher par rapport a l'IMC de la personne et seulement 1 message est affiche. if (r < 16) { System.out.println("Maigreur extreme (denutrition)"); } else if (r < 19) { System.out.println("Maigreur"); } else if (r <= 24.9) { System.out.println("Poids normal"); } else if (r <= 29.9) { System.out.println("Embonpoint"); } else if (r <= 34.9) { System.out.println("Obesite modere"); } else if (r <= 39.9) { System.out.println("Obesite severe"); } else { System.out.println("Obesite massive"); } break; } case "2": {// s'il a choisit le 2 pour calcule sont IMG do { System.out.println("Choisir votre genre"); System.out.println("F ou f pour femme " + "H ou h pour homme"); System.out.println("Entrez votre choix"); value = input.readLine(); try { if ((value.charAt(0) == 'F') || (value.charAt(0) == 'f')) { q = (1.2 * r) + (0.23 * a) - (10.8 * 0) - 5.4;// formule calculer l'IMG si c'est une personne de sexe feminin check = true; } else if ((value.charAt(0) == 'H') || (value.charAt(0) == 'h')) { q = (1.2 * r) + (0.23 * a) - (10.8 * 1) - 5.4;// formule calculer l'IMG si c'est une personne de sexe masculin check = true; } else { check = false; } } catch (NumberFormatException ex) { ex.getStackTrace();} finally{ check = false; System.out.println("F,f ou H, h s'il vous plait *_* "); } } while (!check);// Boucle doit respecter les conditions pour continuer } double d = Math.round(100d * q) / 100d;// formule pour garder 2 chiffres apres la virgule seulement. System.out.println("Votre IMG est : " + d + '%'); // message affiche pour une femme dependament de sont IMG. Seulement un message est affiche. if (value.equals("F") || value.equals("f")) { if (q < 25) { System.out.println("Maigreur"); } else if (q <= 30) { System.out.println("Normal"); } else if (q > 30) { System.out.println("Exces de masse grasse"); } } // message afficher pour un homme dependament de sont IMG. Seulement un message est affiche. if (value.equals("H") || value.equals("h")) { if (q < 15) { System.out.println("Maigreur"); } else if (q <= 20) { System.out.println("Normal"); } else if (q > 20) { System.out.println("Exces de masse grasse"); } } } // C'est une boucle qui demande à l'utilisateur s'il veut recommencer le programme ou non. do { System.out.println("Voulez-vous recommencer le questionnaire? (O/N)"); String line = input.readLine(); if (line.equals("O") || line.equals("o")) { execute_whole_prog = true; check = true; } else if (line.equals("N") || line.equals("n")) { execute_whole_prog = false; check = true; } else { check = false; } } while (!check); // c'est un dessin pour le plaisir :D String skinny = " .(%####(. \n" + " .(&(((#%, \n" + " ,#(((#* \n" + " .(#((#, \n" + " ,#(#&, \n" + " ,#(#%. \n" + " ,#(## \n" + " ,#(%# \n" + " *##%# \n" + " ./##&% .. \n" + " ./**#%%&&(%( \n" + " /%(. *(. \n" + " ** ((. \n" + " ,( ,#( \n" + " ,(/ ,%% \n" + " (#, ./# \n" + " %%, ,(. \n" + " %%, /, \n" + " %#, ,/. ,, ,, \n" + " #/.#@@(,/&%,,, \n" + " (, .** .. ,, \n" + " (, ,, \n" + " ,/. *#%%%# ,, \n" + " ,/. (%#*/(&, ,, \n" + " ./. (/,,*(%. ,, \n" + " .(, .*/#(,. ,, \n" + " .(. ,, \n" + " ((/#**(*..#,.*. ,* ,, \n" + " .#* %@#/#(,#,,/. ,* ,, ,(/..,, \n" + ".((*/* ,#/..#,.(, ,, ,,,%% ,%*.*#. \n" + " *#(, *(/*/%, (, ,(. ,/*#%. ,*/(,\n" + " *# ./#, .,,. *##*(%( ,,,, *##* \n" + " ,*,. ,/(/,, ,,,*##* ,(. \n" + " .*#, ,#*,. *#(#%, \n" + " ./, ,/ \n" + " .(, ,, \n" + " .(. ,* \n" + " .(. ,* \n" + " ,#. ,, \n" + " ,(. ,, \n" + " ,( ,, \n" + " ,(. ./. \n" + " ,/. *#( \n" + " (#( . .*//, \n" + " ,,.(*(#, \n" + " ,*,(*/(, \n" + " ,*,(**(, \n" + " ./,/,/(, \n" + " ./,/,*(, \n" + " ./*/,,(, \n" + " .(*/.,(/ \n" + " .(,/,,(/ \n" + " ,(,*,,(* \n" + " .,,.,#,,,,##,,, \n" + " **,. .. ,, . *(/. \n" + " ,( /, ,#( \n" + " .(*. ,/%*. ,/*. \n" + " ,//(((/,. *##((((, "; System.out.print(skinny); } while (execute_whole_prog); } }
D'accord merci. Je suis désolé. Je ne suis pas habituer encore à publier code java sur le internet.
J'ai un autre problème les JOptionPane. Malheureusement, je ne comprend pas comment faire pour qu'une fois la première question répondu le 2 pop-pop ouvre et demande la 2 question ainsi de suite.
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 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import javax.swing.JOptionPane; /** * @author Gabriel */ public class Tp1 { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { /* String input = System.console().readLine(); Integer.parseInt(input); Double.parseDouble(input); */ String c;// variable entrez au clavier soit 1 ou 2 String value;// variable entrez sois F, f ou H, h double r;// variable IMC double q;// variable IMG double t;// variable pour taille double p;// variable pour poids int a;// variable pour age BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); boolean execute_whole_prog = false; do { q = 0;// variable IMG t = 0;// variable pour taille p = 0;// variable pour poids a = 0;// variable pour age JOptionPane.showInputDialog("Bienvenue dans le calculateur << IMC,IMG >>\n Entrez votre prenom"); String read = input.readLine(); boolean check; do {// c'est le début de la boucle JOptionPane.showInputDialog("Entrez votre poids positif en kilogramme"); String line = input.readLine(); try { p = Double.parseDouble(line); if (p < 0) {//c'est une condition qui dit que la valeur entre doit etre plus grande que 0. JOptionPane.showInputDialog("Entrez un poids qui n'est pas negatif"); check = false; } else { check = true; } } catch (NumberFormatException ex) // c'est pour les exeptions par exemple toute les valeur qui ne sont pas un chiffre ou un nombre quand on le rentrer est traiter et indentifier comme une valeur qui ne respect pas la condition pour etre accepte. { check =false; JOptionPane.showInputDialog("Des kilogrammes svp... o_O"); } } while (!check);// Boucle doit respecter les conditions pour continuer do { JOptionPane.showInputDialog("Entrez votre age entre 18 et 65 ans"); String line = input.readLine(); try { a = Integer.parseInt(line); if (a >= 18 && a <= 65) { check = true; } else { JOptionPane.showInputDialog("Entrez un age entre 18 et 65 ans svp... -_-"); check = false; } } catch (NumberFormatException ex) { check = false; JOptionPane.showInputDialog("Un age svp... o_O"); } } while (!check);// Boucle doit respecter les conditions pour continuer do { JOptionPane.showInputDialog("Entrez votre taille en mètre entre 0 et 2.10 --Utiliser un point car les virgules ne sont pas acceptee."); String line = input.readLine(); try { t = Double.parseDouble(line); if (t >= 0 && t <= 2.10) { JOptionPane.showInputDialog("Entrez votre taille en metre entre 0 et 2.10!!"); check = true; } else { check = false; } } catch (NumberFormatException ex) { check = false; JOptionPane.showInputDialog("Une taille svp... o_O"); } } while (!check);// Boucle doit respecter les conditions pour continuer do { JOptionPane.showInputDialog("Que voulez-vous calculer 1.IMC ou 2.IMG"); JOptionPane.showInputDialog("Entrez votre choix(1 ou 2)"); c = input.readLine(); try { if (c.equals("1")) { check = true; } else if (c.equals("2")) { JOptionPane.showInputDialog("Entre sois le chiffre 1 ou 2 "); check =true; } else { check = false; } } catch (NumberFormatException ex) { check = false; JOptionPane.showInputDialog("Le chiffre 1 ou 2 svp :)"); } } while (!check);// Boucle doit respecter les conditions pour continuer JOptionPane.showInputDialog("choix=" + c); r = p / (t * t);// formule pour calculer l'IMC switch (c) {// Pour envoyer sois dans le calcule de IMC ou IMG dependant de sont choix. case "1": {// s'il a choisit le 1 pour calculer sont IMC double d = Math.round(100d * r) / 100d;// garder seulement 2 chiffre apres la virgule seulement. JOptionPane.showInputDialog("Votre IMC est : " + d); // les messages suivant sont afficher par rapport a l'IMC de la personne et seulement 1 message est affiche. if (r < 16) { System.out.println("Maigreur extreme (denutrition)"); } else if (r < 19) { System.out.println("Maigreur"); } else if (r <= 24.9) { System.out.println("Poids normal"); } else if (r <= 29.9) { System.out.println("Embonpoint"); } else if (r <= 34.9) { System.out.println("Obesite modere"); } else if (r <= 39.9) { System.out.println("Obesite severe"); } else { System.out.println("Obesite massive"); } break; } case "2": {// s'il a choisit le 2 pour calcule sont IMG do { JOptionPane.showInputDialog("Choisir votre genre\nF ou f pour femme " + "H ou h pour homme\nEntrez votre choix"); value = input.readLine(); try { if ((value.charAt(0) == 'F') || (value.charAt(0) == 'f')) { q = (1.2 * r) + (0.23 * a) - (10.8 * 0) - 5.4;// formule calculer l'IMG si c'est une personne de sexe feminin check = true; } else if ((value.charAt(0) == 'H') || (value.charAt(0) == 'h')) { q = (1.2 * r) + (0.23 * a) - (10.8 * 1) - 5.4;// formule calculer l'IMG si c'est une personne de sexe masculin check = true; } else { check = false; } } catch (NumberFormatException ex) { ex.getStackTrace();} finally{ check = false; JOptionPane.showInputDialog("F,f ou H, h s'il vous plait *_* "); } } while (!check);// Boucle doit respecter les conditions pour continuer } double d = Math.round(100d * q) / 100d;// formule pour garder 2 chiffres apres la virgule seulement. JOptionPane.showInputDialog("Votre IMG est : " + d + '%'); // message affiche pour une femme dependament de sont IMG. Seulement un message est affiche. if (value.equals("F") || value.equals("f")) { if (q < 25) { JOptionPane.showInputDialog("Maigreur"); } else if (q <= 30) { JOptionPane.showInputDialog("Normal"); } else if (q > 30) { JOptionPane.showInputDialog("Exces de masse grasse"); } } // message afficher pour un homme dependament de sont IMG. Seulement un message est affiche. if (value.equals("H") || value.equals("h")) { if (q < 15) { JOptionPane.showInputDialog("Maigreur"); } else if (q <= 20) { JOptionPane.showInputDialog("Normal"); } else if (q > 20) { JOptionPane.showInputDialog("Exces de masse grasse"); } } } // C'est une boucle qui demande à l'utilisateur s'il veut recommencer le programme ou non. do { JOptionPane.showInputDialog("Voulez-vous recommencer le questionnaire? (O/N)"); String line = input.readLine(); if (line.equals("O") || line.equals("o")) { execute_whole_prog = true; check = true; } else if (line.equals("N") || line.equals("n")) { execute_whole_prog = false; check = true; } else { check = false; } } while (!check); // c'est un dessin pour le plaisir :D String skinny = " .(%####(. \n" + " .(&(((#%, \n" + " ,#(((#* \n" + " .(#((#, \n" + " ,#(#&, \n" + " ,#(#%. \n" + " ,#(## \n" + " ,#(%# \n" + " *##%# \n" + " ./##&% .. \n" + " ./**#%%&&(%( \n" + " /%(. *(. \n" + " ** ((. \n" + " ,( ,#( \n" + " ,(/ ,%% \n" + " (#, ./# \n" + " %%, ,(. \n" + " %%, /, \n" + " %#, ,/. ,, ,, \n" + " #/.#@@(,/&%,,, \n" + " (, .** .. ,, \n" + " (, ,, \n" + " ,/. *#%%%# ,, \n" + " ,/. (%#*/(&, ,, \n" + " ./. (/,,*(%. ,, \n" + " .(, .*/#(,. ,, \n" + " .(. ,, \n" + " ((/#**(*..#,.*. ,* ,, \n" + " .#* %@#/#(,#,,/. ,* ,, ,(/..,, \n" + ".((*/* ,#/..#,.(, ,, ,,,%% ,%*.*#. \n" + " *#(, *(/*/%, (, ,(. ,/*#%. ,*/(,\n" + " *# ./#, .,,. *##*(%( ,,,, *##* \n" + " ,*,. ,/(/,, ,,,*##* ,(. \n" + " .*#, ,#*,. *#(#%, \n" + " ./, ,/ \n" + " .(, ,, \n" + " .(. ,* \n" + " .(. ,* \n" + " ,#. ,, \n" + " ,(. ,, \n" + " ,( ,, \n" + " ,(. ./. \n" + " ,/. *#( \n" + " (#( . .*//, \n" + " ,,.(*(#, \n" + " ,*,(*/(, \n" + " ,*,(**(, \n" + " ./,/,/(, \n" + " ./,/,*(, \n" + " ./*/,,(, \n" + " .(*/.,(/ \n" + " .(,/,,(/ \n" + " ,(,*,,(* \n" + " .,,.,#,,,,##,,, \n" + " **,. .. ,, . *(/. \n" + " ,( /, ,#( \n" + " .(*. ,/%*. ,/*. \n" + " ,//(((/,. *##((((, "; JOptionPane.showInputDialog(skinny); } while (execute_whole_prog); }
Salut,
tu as mis un input.readLine() en cours de route, donc soit tu le vires, soit tu tapes quelque chose dans le vide qui ne servira à rien... (à appliquer pour la suite du code bien évidemment...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 JOptionPane.showInputDialog("Bienvenue dans le calculateur << IMC,IMG >>\n Entrez votre prenom"); String read = input.readLine(); boolean check; do {// c'est le début de la boucle
Et sinon, un grand bravo pour avoir réussi à mettre tout ça dans le main! (je taquine, je taquine, c'est pas méchant...)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager