coolpytheas l'union fait la force | 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 :
- 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 */
- }
|
---------------
l'on s'enrichit d'avantage en partageant ces connaissances
|