Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
384 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Erreur incompréhensible d'une variable de type int

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur incompréhensible d'une variable de type int

n°2211491
coolpythea​s
l'union fait la force
Posté le 24-11-2013 à 17:10:33  profilanswer
 

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 :
  1. public class Jours {
  2.    
  3.     private static final String[] dizaineNames = {
  4.     "",
  5.     "",
  6.     "vingt",
  7.     "trente",
  8.     "quarante",
  9.     "cinquante",
  10.     "soixante",
  11.     "soixante",
  12.     "quatre-vingt",
  13.     "quatre-vingt"
  14.   };
  15.   private static final String[] uniteNames1 = {
  16.     "",
  17.     "un",
  18.     "deux",
  19.     "trois",
  20.     "quatre",
  21.     "cinq",
  22.     "six",
  23.     "sept",
  24.     "huit",
  25.     "neuf",
  26.     "dix",
  27.     "onze",
  28.     "douze",
  29.     "treize",
  30.     "quatorze",
  31.     "quinze",
  32.     "seize",
  33.     "dix-sept",
  34.     "dix-huit",
  35.     "dix-neuf"
  36.   };
  37.   private static final String[] uniteNames3 = {
  38.     "",
  39.     "premier",
  40.     "deux",
  41.     "trois",
  42.     "quatre",
  43.     "cinq",
  44.     "six",
  45.     "sept",
  46.     "huit",
  47.     "neuf",
  48.     "dix",
  49.     "onze",
  50.     "douze",
  51.     "treize",
  52.     "quatorze",
  53.     "quinze",
  54.     "seize",
  55.     "dix-sept",
  56.     "dix-huit",
  57.     "dix-neuf"
  58.   };
  59.  
  60.    private static String convertZeroToHundred(int number) {
  61.     int laDizaine = number / 10;
  62.     int  lUnite = number % 10;
  63.     String resultat = "";
  64.     switch (laDizaine) {
  65.     case 1 :
  66.     case 7 :
  67.     case 9 :
  68.       lUnite = lUnite + 10;
  69.       break;
  70.     default:
  71.     }
  72.     // séparateur "-" "et"  ""
  73.     String laLiaison = "";
  74.     if (laDizaine > 1) {
  75.       laLiaison = "-";
  76.     }
  77.     // cas particuliers
  78.     switch (lUnite) {
  79.     case 0:
  80.       laLiaison = "";
  81.       break;
  82.     case 1 :
  83.       if (laDizaine == 8) {
  84.         laLiaison = "-";
  85.       }
  86.       else {
  87.         laLiaison = " et ";
  88.       }
  89.       break;
  90.     case 11 :
  91.       if (laDizaine==7) {
  92.         laLiaison = " et ";
  93.       }
  94.       break;
  95.     default:
  96.     }
  97.     // dizaines en lettres
  98.     switch (laDizaine) {
  99.     case 0:
  100.       resultat = uniteNames3[lUnite];
  101.       break;
  102.     case 8 :
  103.       if (lUnite == 0) {
  104.         resultat = dizaineNames[laDizaine];
  105.       }
  106.       else {
  107.         resultat = dizaineNames[laDizaine]
  108.                                 + laLiaison + uniteNames1[lUnite];
  109.       }
  110.       break;
  111.     default :
  112.       resultat = dizaineNames[laDizaine]
  113.                               + laLiaison + uniteNames1[lUnite];
  114.     }
  115.     return resultat;
  116.   }
  117.    
  118.     public static void main(String[] args) {
  119. /* les valeurs 8 et 9 sont convertis*/
  120.         System.out.println("*** " + Jours.convertZeroToHundred(8));
  121.         System.out.println("*** " + Jours.convertZeroToHundred(9));
  122. /* par contre 08 et 09 déclenchent une exception de type: Integer number too large :08 */
  123. }


---------------
l'on s'enrichit d'avantage en partageant ces connaissances
mood
Publicité
Posté le 24-11-2013 à 17:10:33  profilanswer
 

n°2211503
lasnoufle
La seule et unique!
Posté le 24-11-2013 à 21:02:56  profilanswer
 

Wesh
 
Google t'aurais donne la reponse en deux secondes: un 0 devant un nombre en Java, c'est pour indiquer un nombre en octal (base 8). Du coup, 08 et 09 n'ont pas de sens. Et 010, si tu arrives jusque-la, ne vaut pas 10 mais 8, etc.
 
Bref, je suppose que tu passes tes nombres depuis une "source" externe; du coup passes les en tant que String au lieu d'Integer, et pour les passer en base 10, utilises Integer.parseInt() (ex: Integer.parseInt("08" ) retourne 8).


---------------
C'était vraiment très intéressant.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Erreur incompréhensible d'une variable de type int

 

Sujets relatifs
erreur de compilation projet ou bibliothèque introuvableMSSQL - SET variable
message d'erreur fscanf et STDIN !!!erreur compilation
Erreur phpMyadmin "The mbstring extension is missing"[Erreur] Exception in Thread ....
erreur non comprisepostgresql conversion de type
[EXCEL] Impression d'une zone variable (problème de Range) [Résolu][ Excel & Seven ] Perte variable
Plus de sujets relatifs à : Erreur incompréhensible d'une variable de type int



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR