Exercices en Java (03-Structures de contrôle (partie1))

Sébastien ESTIENNE

Ce troisième chapitre concerne la première partie des structures de contrôle : if/else et while.
Le premier exercice concerne la gestion de clients. Le deuxième exercice trouve le maximum parmi une série de nombres. Le troisième exercice indique si un nombre de 5 chiffres est un palindrome ou non. Le quatrième exercice est un programme de cryptage de nombres à 4 chiffres. Le cinquième exercice est le programme de décryptage correspondant à l'exercice 4.

Les principales notions abordées sont les suivantes :

- Structures de sélection if/else ;

- Structures de contrôle while ;

- Structures de contrôle avec compteur et avec sentinelle ;

- Opérateur d'incrémentation et de décrémentation.

Pour faire et comprendre ces exercices, vous aurez besoin d'un certain nombre de notions sur le Java en rapport avec le chapitre. Pour cela, vous pouvez consulter les tutoriels java de developpez à l'adresse suivante : https://java.developpez.com/cours/

La documentation de l'API sur le site de Sun est aussi une mine d'or : http://java.sun.com/javase/6/docs/api/ ♪

- Titre : Exercices en Java (03-Structures de contrôle (partie1))

- Auteur : Sébastien ESTIENNE

- Parution : 30 avril 2007

- Mise à jour : 24 juillet 2007

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2007 Sébastien ESTIENNE. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Gestion de clients

- I-1. Énoncé

- I-2. Aperçu

- I-3. Démonstration

- I-4. Solution

- II. Maximum

- II-1. Énoncé

- II-2. Aperçu

- II-3. Démonstration

- II-4. Solution

- III. Palindrome

- III-1. Énoncé

- III-2. Aperçu

- III-3. Démonstration

- III-4. Solution

- IV. Cryptage

- IV-1. Énoncé

- IV-2. Aperçu

- IV-3. Démonstration

- IV-4. Solution

- V. Décryptage

- V-1. Énoncé

- V-2. Aperçu

- V-3. Démonstration

- V-4. Solution

- VI. Remerciements

I - Gestion de clients

I-1 - Énoncé

Écrire une application qui vérifie si un client (d'un magasin) a dépassé sa limite de crédit sur son compte débiteur. Pour chaque client, vous avez les données suivantes :
- le numéro de compte ;
- le solde au début du mois ;
- le total des articles portés en compte de ce client ce mois-ci ;
- le total de tous les crédits appliqués au compte de ce client ce mois-ci ;
- la limite de crédit autorisée.
L'utilisateur doit pouvoir saisir chaque donnée sous forme d'entiers dans des boites de dialogue d'entrée, calculer le nouveau solde (solde début - débits + crédits), afficher le nouveau solde et déterminer si le nouveau solde dépasse la limite de crédit du client (dans ce cas, il faut afficher le message « Limite de crédit dépassée »).

Classes de l'API utilisées :

- javax.swing.JOptionPane

I-2 - Aperçu

Aperçu du résultat.

Aperçu du résultat.

I-3 - Démonstration

Lancer avec Java Web Start

Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

I-4 - Solution

Client.java

1. /*

2. * Fichier: Client.java

3. * Crée le: 03 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre3;

27. import javax.swing.JOptionPane;

31. /**

32. * <p>Gestion de comptes clients dans un magasin.</p>

33. * @author Sébastien ESTIENNE.

34. */

35. public class Client

36. {

37. /**

38. * <p>Débute l'exécution de l'application.</p>

39. * @param args Les paramètres de la ligne de commande.

40. */

41. public static void main(String[] args)

42. {

43. // Entrées de l'utilisateur:

44. // Le numéro du compte.

45. String sNoCompte = "";

47. // Le solde au début du mois.

48. String sSolde = "";

50. // Le total des articles portés en compte de ce client ce mois-ci.

51. String sDebits = "";

53. // Le total de tous les crédits appliqués au compte de ce client ce mois-ci.

54. String sCredits = "";

56. // La limite de crédit autorisée.

57. String sLimite = "";

59. // Données entrées par l'utilisateur converties.

60. int noCompte = -1;

61. double solde = 0, debits = 0, credits = 0, limite = 0;

63. // Chaine de caractères pour l'affichage du nouveau solde.

64. String sortie = "";

66. // Demander à l'utilisateur le numéro du compte.

67. sNoCompte = JOptionPane.showInputDialog("Entrez le numéro du compte (-1 "

68. + "pour terminer) :\n\n");

70. // Convertir le numéro du compte de String en entier.

71. try

72. {

73. noCompte = Integer.parseInt(sNoCompte);

74. }

75. // Si la valeur n'est pas un nombre entier, cela génère une exception qui implique un

76. // traitement particulier.

77. catch(NumberFormatException e)

78. {

79. JOptionPane.showMessageDialog(null,

80. "La valeur saisie est incorrecte, l'application va se terminer.", "Erreur",

81. JOptionPane.ERROR_MESSAGE);

82. noCompte = -1;

83. }

85. while(noCompte != -1)

86. {

87. // Demander à l'utilisateur le Solde, les Débits, les Crédits, la Limite du compte.

88. sSolde = JOptionPane.showInputDialog("Entrez le solde au début du mois :\n\n");

89. sDebits = JOptionPane.showInputDialog("Entrez le total des articles portés en "

90. + "compte ce mois :\n\n");

91. sCredits = JOptionPane.showInputDialog("Entrez le total des crédits appliqués "

92. + "au compte ce mois :\n\n");

93. sLimite = JOptionPane.showInputDialog("Entrez la limite de crédit autorisée " + ":\n\n");

95. // Convertir le Solde, les Débits, les Crédits, la Limite du compte de String en double.

96. try

97. {

98. solde = Double.parseDouble(sSolde);

99. debits = Double.parseDouble(sDebits);

100. credits = Double.parseDouble(sCredits);

101. limite = Double.parseDouble(sLimite);

102. }

103. // Si une des valeurs n'est pas un nombre, cela génère une exception qui implique un

104. // traitement particulier.

105. catch(NumberFormatException e)

106. {

107. JOptionPane.showMessageDialog(null,

108. "Au moins une des valeurs saisies est incorrecte.\n"

109. + "Ces valeurs seront initialisées à 0.", "Erreur",

110. JOptionPane.ERROR_MESSAGE);

111. noCompte = -1;

112. }

114. // Calculer la valeur du nouveau solde du mois.

115. solde = solde - debits + credits;

117. // Mettre à jour la chaine de sortie.

118. sortie = "Le nouveau solde du compte numéro " + noCompte + " est : " + solde + ".\n";

120. // Vérifier si la limite de crédit a été dépassée.

121. if(solde + limite < 0)

122. {

123. // On modifie la chaine de sortie.

124. sortie += "La limite de crédit est dépassée.";

125. }

127. // Afficher le nouveau solde du compte pour ce mois.

128. JOptionPane.showMessageDialog(null, sortie, "Solde du mois",

129. JOptionPane.INFORMATION_MESSAGE);

131. // Demander à l'utilisateur le numéro du compte.

132. sNoCompte = JOptionPane.showInputDialog("Entrez le numéro du compte (-1 "

133. + "pour terminer) :\n\n");

135. // Convertir le numéro du compte de String en entier.

136. try

137. {

138. noCompte = Integer.parseInt(sNoCompte);

139. }

140. // Si la valeur n'est pas un nombre entier, cela génère une exception qui implique un

141. // traitement particulier.

142. catch(NumberFormatException e)

143. {

144. JOptionPane.showMessageDialog(null,

145. "La valeur saisie est incorrecte, l'application va se terminer.", "Erreur",

146. JOptionPane.ERROR_MESSAGE);

147. noCompte = -1;

148. }

149. }

151. // Terminer l'application.

152. System.exit(0);

153. }

154. }

II - Maximum

II-1 - Énoncé

Écrire une application qui demande une suite de 10 nombres à un seul chiffre (sous la forme de caractères) puis détermine et affiche le plus grand de ces nombres.
Astuce : utilisez trois variables :
- compteur : qui compte jusqu'à 10 ;
- nombre : le chiffre courant ;
- plusGrand : le plus grand nombre connu jusqu'ici.

Classes de l'API utilisées :

- javax.swing.JOptionPane

II-2 - Aperçu

Aperçu du résultat.

Aperçu du résultat.

II-3 - Démonstration

Lancer avec Java Web Start

Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

II-4 - Solution

Maximum.java

1. /*

2. * Fichier: Maximum.java

3. * Crée le: 03 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre3;

27. import javax.swing.JOptionPane;

31. /**

32. * <p>Calcule le chiffre maximum d'une série de 10 chiffres.</p>

33. * @author Sébastien ESTIENNE.

34. */

35. public class Maximum

36. {

37. /**

38. * <p>Débute l'exécution de l'application.</p>

39. * @param args Les paramètres de la ligne de commande.

40. */

41. public static void main(String[] args)

42. {

43. // Le compteur.

44. int compteur = 1;

46. // Le nombre saisi par l'utilisateur.

47. long nombre = 0;

49. // Le chiffre maximum.

50. int plusGrand = 0;

52. // Demander à l'utilisateur les 10 nombres à 1 chiffre.

53. try

54. {

55. nombre = Long.parseLong(JOptionPane.showInputDialog("Entrez les 10 nombres "

56. + "à 1 chiffre :\n\n"));

57. }

58. // Si la valeur n'est pas un nombre entier, cela génère une exception qui implique un

59. // traitement particulier.

60. catch(NumberFormatException e)

61. {

62. JOptionPane.showMessageDialog(null,

63. "La valeur saisie est incorrecte, l'application va se terminer.", "Erreur",

64. JOptionPane.ERROR_MESSAGE);

66. // Termine l'application.

67. System.exit(0);

68. }

70. while(compteur <= 10)

71. {

72. // Tester si le chiffre courant est plus grand.

73. if(nombre % 10 > plusGrand)

74. {

75. plusGrand = (int) (nombre % 10);

76. }

77. // Permet de passer au chiffre suivant.

78. nombre /= 10;

79. // Indique q'un nombre de plus vient d'être traité.

80. compteur++;

81. }

83. // Afficher le chiffre maximum.

84. JOptionPane.showMessageDialog(null, "Le plus grand nombre à un chiffre est : " + plusGrand

85. + ".", "Maximum", JOptionPane.INFORMATION_MESSAGE);

87. // Termine l'application.

88. System.exit(0);

89. }

90. }

III - Palindrome

III-1 - Énoncé

Un palindrome est un nombre, un mot ou une phrase qui se lit de façon identique dans un sens et dans l'autre.
Exemple de nombres qui sont des palindromes : 45654, 77777, 11511.
Écrivez une application qui demande un entier de 5 chiffres et détermine si c'est un palindrome. Si le nombre ne comporte pas 5 chiffres affichez dans une boite de message une erreur. Si l'utilisateur annule la boite de message, permettez-lui d'entrer une nouvelle valeur.

Classes de l'API utilisées :

- javax.swing.JOptionPane

III-2 - Aperçu

Aperçu du résultat.

Aperçu du résultat.

III-3 - Démonstration

Lancer avec Java Web Start

Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

III-4 - Solution

Palindrome.java

1. /*

2. * Fichier: Palindrome.java

3. * Crée le: 03 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre3;

27. import javax.swing.JOptionPane;

31. /**

32. * <p>Indique si un nombre à 5 chiffres est un palindrome.</p>

33. * @author Sébastien ESTIENNE.

34. */

35. public class Palindrome

36. {

37. /**

38. * <p>Débute l'exécution de l'application.</p>

39. * @param args Les paramètres de la ligne de commande.

40. */

41. public static void main(String[] args)

42. {

43. // Le nombre entré par l'utilisateur.

44. String sNombre = "";

46. // Le nombre converti.

47. int nombre = -1;

49. do

50. {

51. // Demander à l'utilisateur le nombre à 5 chiffres.

52. sNombre = JOptionPane.showInputDialog("Entrez un nombre de 5 chiffres :\n\n");

54. // Convertir sNombre de String en int.

55. try

56. {

57. nombre = Integer.parseInt(sNombre);

58. }

59. // Si la valeur n'est pas un nombre entier, cela génère une exception qui implique un

60. // traitement particulier.

61. catch(NumberFormatException e)

62. {

63. // Ne rien faire.

64. }

65. }

66. while(sNombre == null || sNombre.length() != 5 || nombre == -1);

68. // Vérifier si le nombre est un palindrome (xyzyx)

69. if(nombre / 10000 == nombre % 10 && nombre / 1000 % 10 == nombre / 10 % 10)

70. {

71. // Afficher que le nombre est un palindrome.

72. JOptionPane.showMessageDialog(null, nombre + " est un palindrome.", "Palindrome",

73. JOptionPane.INFORMATION_MESSAGE);

74. }

75. else

76. {

77. // Afficher que le nombre n'est pas un palindrome.

78. JOptionPane.showMessageDialog(null, nombre + " n'est pas un palindrome.", "Palindrome",

79. JOptionPane.INFORMATION_MESSAGE);

80. }

82. // Termine l'application.

83. System.exit(0);

84. }

85. }

IV - Cryptage

IV-1 - Énoncé

Écrire un programme qui crypte les données introduites par l'utilisateur dans une boite de dialogue d'entrée. Les données sont sous forme d'entiers de 4 chiffres.
Algorithme de cryptage : remplacer chaque chiffre par (la somme de ce chiffre et de 7) modulo 10; ensuite il faut permuter le premier chiffre et le troisième ainsi que le deuxième et le quatrième.
Affichez le résultat dans une boite de dialogue.

Classes de l'API utilisées :

- java.text.DecimalFormat

- javax.swing.JOptionPane

IV-2 - Aperçu

Aperçu du résultat.

Aperçu du résultat.

IV-3 - Démonstration

Lancer avec Java Web Start

Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

IV-4 - Solution

Cryptage.java

1. /*

2. * Fichier: Cryptage.java

3. * Crée le: 03 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre3;

27. import java.text.DecimalFormat;

29. import javax.swing.JOptionPane;

33. /**

34. * <p>Crypte un nombre saisi par l'utilisateur.</p>

35. * @author Sébastien ESTIENNE.

36. */

37. public class Cryptage

38. {

39. /**

40. * <p>Débute l'exécution de l'application.</p>

41. * @param args Les paramètres de la ligne de commande.

42. */

43. public static void main(String[] args)

44. {

45. // Nombre entré par l'utilisateur.

46. String sNombre = "";

48. // Nombre converti.

49. int nombre = -1;

51. // Les différents chiffres du nombre.

52. int chiffre1, chiffre2, chiffre3, chiffre4;

54. // Le nombre crypté.

55. int code;

57. // Sert à afficher les nombres sur 4 chiffres.

58. DecimalFormat quatreChiffres = new DecimalFormat("0000");

60. do

61. {

62. // Demander à l'utilisateur le code à 4 chiffres.

63. sNombre = JOptionPane.showInputDialog("Entrez un nombre de 4 chiffres :\n\n");

65. // Convertir sNombre de String en int.

66. try

67. {

68. nombre = Integer.parseInt(sNombre);

69. }

70. // Si la valeur n'est pas un nombre entier, cela génère une exception qui implique un

71. // traitement particulier.

72. catch(NumberFormatException e)

73. {

74. // Ne rien faire.

75. }

76. }

77. while(sNombre == null || sNombre.length() != 4 || nombre == -1);

79. // Récupérer les 4 chiffres du nombre dans les différentes variables.

80. chiffre1 = nombre / 1000;

81. chiffre2 = nombre / 100 % 10;

82. chiffre3 = nombre / 10 % 10;

83. chiffre4 = nombre % 10;

85. // Appliquer la première partie du cryptage ( c = (c + 7) % 10 ).

86. chiffre1 = (chiffre1 + 7) % 10;

87. chiffre2 = (chiffre2 + 7) % 10;

88. chiffre3 = (chiffre3 + 7) % 10;

89. chiffre4 = (chiffre4 + 7) % 10;

91. // Appliquer la première partie du cryptage : inverser les chiffres 1, 3 et 2, 4 du nombre.

92. code = chiffre3 * 1000 + chiffre4 * 100 + chiffre1 * 10 + chiffre2;

94. // Afficher le résultat du cryptage.

95. JOptionPane.showMessageDialog(null, "Le nombre " + quatreChiffres.format(nombre)

96. + " crypté donne " + quatreChiffres.format(code), "Cryptage",

97. JOptionPane.INFORMATION_MESSAGE);

99. // Terminer l'application.

100. System.exit(0);

101. }

102. }

V - Décryptage

V-1 - Énoncé

Écrire un programme qui décrypte les données introduites par l'utilisateur dans une boite de dialogue d'entrée. Les données sont sous forme d'entiers de 4 chiffres.
Algorithme de cryptage : remplacer chaque chiffre par (la somme de ce chiffre et de 7) modulo 10; ensuite il faut permuter le premier chiffre et le troisième ainsi que le deuxième et le quatrième. À vous de trouver l'algorithme de décryptage…
Affichez le résultat dans une boite de dialogue.

Classes de l'API utilisées :

- java.text.DecimalFormat

- javax.swing.JOptionPane

V-2 - Aperçu

Aperçu du résultat.

Aperçu du résultat.

V-3 - Démonstration

Lancer avec Java Web Start

Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.

V-4 - Solution

Decryptage.java

1. /*

2. * Fichier: Decryptage.java

3. * Crée le: 03 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre3;

27. import java.text.DecimalFormat;

29. import javax.swing.JOptionPane;

33. /**

34. * <p>Décrypte un nombre saisi par l'utilisateur.</p>

35. * @author Sébastien ESTIENNE.

36. */

37. public class Decryptage

38. {

39. /**

40. * <p>Débute l'exécution de l'application.</p>

41. * @param args Les paramètres de la ligne de commande.

42. */

43. public static void main(String[] args)

44. {

45. // Le code entré par l'utilisateur.

46. String sCode = "";

48. // Le code converti.

49. int code = -1;

51. // Les différents chiffres du nombre.

52. int chiffre1, chiffre2, chiffre3, chiffre4;

54. // Le code décrypté.

55. int nombre;

57. // Sert à afficher les nombres sur 4 chiffres.

58. DecimalFormat quatreChiffres = new DecimalFormat("0000");

60. do

61. {

62. // Demander à l'utilisateur le code à 4 chiffres.

63. sCode = JOptionPane.showInputDialog("Entrez un nombre de 4 chiffres :\n\n");

65. // Convertir sNombre de String en int.

66. try

67. {

68. code = Integer.parseInt(sCode);

69. }

70. // Si la valeur n'est pas un nombre entier, cela génère une exception qui implique un

71. // traitement particulier.

72. catch(NumberFormatException e)

73. {

74. // Ne rien faire.

75. }

76. }

77. while(sCode == null || sCode.length() != 4 || code == -1);

79. // Récupérer les 4 chiffres du nombre dans les différentes variables.

80. chiffre1 = code / 1000;

81. chiffre2 = code / 100 % 10;

82. chiffre3 = code / 10 % 10;

83. chiffre4 = code % 10;

85. // Appliquer la première partie du décryptage ( c = (c + 3) % 10 ).

86. chiffre1 = (chiffre1 + 3) % 10;

87. chiffre2 = (chiffre2 + 3) % 10;

88. chiffre3 = (chiffre3 + 3) % 10;

89. chiffre4 = (chiffre4 + 3) % 10;

91. // Appliquer la première partie du décryptage : inverser les chiffres 1, 3 et 2, 4 du code.

92. nombre = chiffre3 * 1000 + chiffre4 * 100 + chiffre1 * 10 + chiffre2;

94. // Afficher le résultat du décryptage.

95. JOptionPane.showMessageDialog(null, "Le nombre " + quatreChiffres.format(code)

96. + " décrypté donne " + quatreChiffres.format(nombre), "Décryptage",

97. JOptionPane.INFORMATION_MESSAGE);

99. // Terminer l'application.

100. System.exit(0);

101. }

102. }

VI - Remerciements

Je tiens à remercier Ricky81, wichtounet, guiblan pour les conseils, remarques et relectures.
Je remercie aussi www.developpez.com me permettant de publier cet article et Nono40 pour ses outils.