Guest User

Untitled

a guest
Jan 23rd, 2018
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 9.06 KB | None | 0 0
  1. /*
  2.  * ChiffreToLettre.java
  3.  *
  4.  * Created on 7 mars 2008, 09:05
  5.  *
  6.  * To change this template, choose Tools | Template Manager
  7.  * and open the template in the editor.
  8.  */
  9.  
  10. package lcn;
  11.  
  12. /**
  13.  *
  14.  * @author ykejji
  15.  */
  16. public class ChiffreToLettre {
  17.    
  18.     /** Creates a new instance of ChiffreToLettre */
  19.     public String ChiffreToLettre(long nombre) {
  20.     return NumberToLetter(nombre);
  21.     }
  22.    
  23.    
  24.  public String Unite( int nombre ){
  25.  String unite="";
  26.  switch( nombre ){
  27.  case 0: unite = "zéro"; break;
  28.  case 1: unite = "un"; break;
  29.  case 2: unite = "deux"; break;
  30.  case 3: unite = "trois"; break;
  31.  case 4: unite = "quatre"; break;
  32.  case 5: unite = "cinq"; break;
  33.  case 6: unite = "six"; break;
  34.  case 7: unite = "sept"; break;
  35.  case 8: unite = "huit"; break;
  36.  case 9: unite = "neuf"; break;
  37.  }//fin switch
  38.  return unite;
  39.  }//-----------------------------------------------------------------------
  40.  
  41.  public String Dizaine(int nombre ){
  42.  String dizaine="";
  43.  switch( nombre ){
  44.  case 10: dizaine = "dix"; break;
  45.  case 11: dizaine = "onze"; break;
  46.  case 12: dizaine = "douze"; break;
  47.  case 13: dizaine = "treize"; break;
  48.  case 14: dizaine = "quatorze"; break;
  49.  case 15: dizaine = "quinze"; break;
  50.  case 16: dizaine = "seize"; break;
  51.  case 17: dizaine = "dix-sept"; break;
  52.  case 18: dizaine = "dix-huit"; break;
  53.  case 19: dizaine = "dix-neuf"; break;
  54.  case 20: dizaine = "vingt"; break;
  55.  case 30: dizaine = "trente"; break;
  56.  case 40: dizaine = "quarante"; break;
  57.  case 50: dizaine = "cinquante"; break;
  58.  case 60: dizaine = "soixante"; break;
  59.  case 70: dizaine = "soixante-dix"; break;
  60.  case 80: dizaine = "quatre-vingt"; break;
  61.  case 90: dizaine = "quatre-vingt-dix"; break;
  62.  }//fin switch
  63.  return dizaine;
  64.  }//-----------------------------------------------------------------------
  65.  
  66.  public String NumberToLetter(long nombre ){
  67.  long i, j, quotient, reste, nb ;
  68.  int n;
  69.  //var ch;
  70.  String numberToLetter="";
  71.  //__________________________________
  72.  
  73.  if( String.valueOf(nombre).replaceAll(" ", "" ).length() > 15 ) return "dépassement de capacité";
  74.  
  75.  
  76.  nb = Long.parseLong(String.valueOf(nombre).replaceAll(" ", "" ));
  77.  if( Math.ceil(nb) != nb ) return "Nombre avec virgule non géré.";
  78.  
  79.  n = String.valueOf(nb).toString().length();
  80.  switch( n ){
  81.  case 1: numberToLetter = Unite((int)nb); break;
  82.  case 2: if( nb > 19 ){
  83.  quotient = (long)Math.floor(nb / 10);
  84.  reste = nb % 10;
  85.  if( nb < 71 || (nb > 79 && nb < 91) ){
  86.  if( reste == 0 ) numberToLetter = Dizaine((int)quotient * 10);
  87.  if( reste == 1 ) numberToLetter = Dizaine((int)quotient * 10) + "-et-" + Unite((int)reste);
  88.  if( reste > 1 ) numberToLetter = Dizaine((int)quotient * 10) + "-" + Unite((int)reste);
  89.  }else numberToLetter = Dizaine(((int)quotient - 1) * 10) + "-" + Dizaine(10 + (int)reste);
  90.  }else numberToLetter = Dizaine((int)nb);
  91.  break;
  92.  case 3: quotient = (long)Math.floor(nb / 100);
  93.  reste = nb % 100;
  94.  if( quotient == 1 && reste == 0 ) numberToLetter = "cent";
  95.  if( quotient == 1 && reste != 0 ) numberToLetter = "cent" + " " + NumberToLetter(reste);
  96.  if( quotient > 1 && reste == 0 ) numberToLetter = Unite((int)quotient) + " cents";
  97.  if( quotient > 1 && reste != 0 ) numberToLetter = Unite((int)quotient) + " cent " + NumberToLetter(reste);
  98.  break;
  99.  case 4 : quotient = (long)Math.floor(nb / 1000);
  100.  reste = nb - quotient * 1000;
  101.  if( quotient == 1 && reste == 0 ) numberToLetter = "mille";
  102.  if( quotient == 1 && reste != 0 ) numberToLetter = "mille" + " " + NumberToLetter(reste);
  103.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " mille";
  104.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " mille " + NumberToLetter(reste);
  105.  break;
  106.  case 5 : quotient = (long)Math.floor(nb / 1000);
  107.  reste = nb - quotient * 1000;
  108.  if( quotient == 1 && reste == 0 ) numberToLetter = "mille";
  109.  if( quotient == 1 && reste != 0 ) numberToLetter = "mille" + " " + NumberToLetter(reste);
  110.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " mille";
  111.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " mille " + NumberToLetter(reste);
  112.  break;
  113.  case 6 : quotient = (long)Math.floor(nb / 1000);
  114.  reste = nb - quotient * 1000;
  115.  if( quotient == 1 && reste == 0 ) numberToLetter = "mille";
  116.  if( quotient == 1 && reste != 0 ) numberToLetter = "mille" + " " + NumberToLetter(reste);
  117.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " mille";
  118.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " mille " + NumberToLetter(reste);
  119.  break;
  120.  case 7: quotient = (long)Math.floor(nb / 1000000);
  121.  reste = nb % 1000000;
  122.  if( quotient == 1 && reste == 0 ) numberToLetter = "un million";
  123.  if( quotient == 1 && reste != 0 ) numberToLetter = "un million" + " " + NumberToLetter(reste);
  124.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " millions";
  125.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " millions " + NumberToLetter(reste);
  126.  break;
  127.  case 8: quotient = (long)Math.floor(nb / 1000000);
  128.  reste = nb % 1000000;
  129.  if( quotient == 1 && reste == 0 ) numberToLetter = "un million";
  130.  if( quotient == 1 && reste != 0 ) numberToLetter = "un million" + " " + NumberToLetter(reste);
  131.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " millions";
  132.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " millions " + NumberToLetter(reste);
  133.  break;
  134.  case 9: quotient = (long)Math.floor(nb / 1000000);
  135.  reste = nb % 1000000;
  136.  if( quotient == 1 && reste == 0 ) numberToLetter = "un million";
  137.  if( quotient == 1 && reste != 0 ) numberToLetter = "un million" + " " + NumberToLetter(reste);
  138.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " millions";
  139.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " millions " + NumberToLetter(reste);
  140.  break;
  141.  case 10: quotient = (long)Math.floor(nb / 1000000000);
  142.  reste = nb - quotient * 1000000000;
  143.  if( quotient == 1 && reste == 0 ) numberToLetter = "un milliard";
  144.  if( quotient == 1 && reste != 0 ) numberToLetter = "un milliard" + " " + NumberToLetter(reste);
  145.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " milliards";
  146.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " milliards " + NumberToLetter(reste);
  147.  break;
  148.  case 11: quotient = (long)Math.floor(nb / 1000000000);
  149.  reste = nb - quotient * 1000000000;
  150.  if( quotient == 1 && reste == 0 ) numberToLetter = "un milliard";
  151.  if( quotient == 1 && reste != 0 ) numberToLetter = "un milliard" + " " + NumberToLetter(reste);
  152.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " milliards";
  153.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " milliards " + NumberToLetter(reste);
  154.  break;
  155.  case 12: quotient = (long)Math.floor(nb / 1000000000);
  156.  reste = nb - quotient * 1000000000;
  157.  if( quotient == 1 && reste == 0 ) numberToLetter = "un milliard";
  158.  if( quotient == 1 && reste != 0 ) numberToLetter = "un milliard" + " " + NumberToLetter(reste);
  159.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " milliards";
  160.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " milliards " + NumberToLetter(reste);
  161.  break;
  162.  case 13: quotient = (long)Math.floor(nb / 1000000000000L);
  163.  reste = nb - quotient * 1000000000000L;
  164.  if( quotient == 1 && reste == 0 ) numberToLetter = "un billion";
  165.  if( quotient == 1 && reste != 0 ) numberToLetter = "un billion" + " " + NumberToLetter(reste);
  166.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " billions";
  167.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " billions " + NumberToLetter(reste);
  168.  break;
  169.  case 14: quotient = (long)Math.floor(nb / 1000000000000L);
  170.  reste = nb - quotient * 1000000000000L;
  171.  if( quotient == 1 && reste == 0 ) numberToLetter = "un billion";
  172.  if( quotient == 1 && reste != 0 ) numberToLetter = "un billion" + " " + NumberToLetter(reste);
  173.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " billions";
  174.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " billions " + NumberToLetter(reste);
  175.  break;
  176.  case 15: quotient = (long)Math.floor(nb / 1000000000000L);
  177.  reste = nb - quotient * 1000000000000L;
  178.  if( quotient == 1 && reste == 0 ) numberToLetter = "un billion";
  179.  if( quotient == 1 && reste != 0 ) numberToLetter = "un billion" + " " + NumberToLetter(reste);
  180.  if( quotient > 1 && reste == 0 ) numberToLetter = NumberToLetter(quotient) + " billions";
  181.  if( quotient > 1 && reste != 0 ) numberToLetter = NumberToLetter(quotient) + " billions " + NumberToLetter(reste);
  182.  break;
  183.  
  184.  }//fin switch
  185.  /*respect de l'accord de quatre-vingt*/
  186.  System.out.println("****"+numberToLetter.length());
  187.  if(numberToLetter.length()>="quatre-vingt".length()){
  188.  if( numberToLetter.substring(numberToLetter.length()-12) == "quatre-vingt" )
  189.  {numberToLetter = numberToLetter + "s";}
  190.  }
  191.  return numberToLetter;
  192.  }
  193.    
  194. }
Add Comment
Please, Sign In to add comment