Bonsoir,
j'ai écrit une classe contenant une méthode de conversion de nombre en lettre.
Je veux convertir les valeurs numériques des jours en toutes lettres. seulement, pour le testé il se passe une erreur que je n'arrive pas à comprendre.

J'arrive à convertir toutes les valeurs de 01 à 31 sans problème, exceptées 08 et 09 pour lesquels le système me dit : "Integer number too large :08 " . Par contre il convertit les valeurs 8 et 9. J'arrive pas à comprendre. Ci-dessous mon code:

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
public class Jours {
 
    private static final String[] dizaineNames = {
    "",
    "",
    "vingt",
    "trente",
    "quarante",
    "cinquante",
    "soixante",
    "soixante",
    "quatre-vingt",
    "quatre-vingt"
  };
 
  private static final String[] uniteNames1 = {
    "",
    "un",
    "deux",
    "trois",
    "quatre",
    "cinq",
    "six",
    "sept",
    "huit",
    "neuf",
    "dix",
    "onze",
    "douze",
    "treize",
    "quatorze",
    "quinze",
    "seize",
    "dix-sept",
    "dix-huit",
    "dix-neuf"
  };
 
  private static final String[] uniteNames3 = {
    "",
    "premier",
    "deux",
    "trois",
    "quatre",
    "cinq",
    "six",
    "sept",
    "huit",
    "neuf",
    "dix",
    "onze",
    "douze",
    "treize",
    "quatorze",
    "quinze",
    "seize",
    "dix-sept",
    "dix-huit",
    "dix-neuf"
  };
 
   private static String convertZeroToHundred(int number) {
 
    int laDizaine = number / 10;
    int  lUnite = number % 10;
    String resultat = "";
 
    switch (laDizaine) {
    case 1 :
    case 7 :
    case 9 :
      lUnite = lUnite + 10;
      break;
    default:
    }
 
    // séparateur "-" "et"  ""
    String laLiaison = "";
    if (laDizaine > 1) {
      laLiaison = "-";
    }
    // cas particuliers
    switch (lUnite) {
    case 0:
      laLiaison = "";
      break;
    case 1 :
      if (laDizaine == 8) {
        laLiaison = "-";
      }
      else {
        laLiaison = " et ";
      }
      break;
    case 11 :
      if (laDizaine==7) {
        laLiaison = " et ";
      }
      break;
    default:
    }
 
    // dizaines en lettres
    switch (laDizaine) {
    case 0:
      resultat = uniteNames3[lUnite];
      break;
    case 8 :
      if (lUnite == 0) {
        resultat = dizaineNames[laDizaine];
      }
      else {
        resultat = dizaineNames[laDizaine] 
                                + laLiaison + uniteNames1[lUnite];
      }
      break;
    default :
      resultat = dizaineNames[laDizaine] 
                              + laLiaison + uniteNames1[lUnite];
    }
    return resultat;
  }
 
    public static void main(String[] args) {
/* les valeurs 8 et 9 sont convertis*/
        System.out.println("*** " + Jours.convertZeroToHundred(8));
        System.out.println("*** " + Jours.convertZeroToHundred(9)); 
 
/* par contre 08 et 09 déclenchent une exception de type: Integer number too large :08 */
}