Guest User

Untitled

a guest
Jul 22nd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1.  
  2. class NumberSpellerItalian implements NumberSpeller {
  3. private static final String[] nomiCasiSpeciali = {
  4. "zero",
  5. "uno",
  6. "due",
  7. "tre",
  8. "quattro",
  9. "cinque",
  10. "sei",
  11. "sette",
  12. "otto",
  13. "nove",
  14. "dieci",
  15. "undici",
  16. "dodici",
  17. "tredici",
  18. "quattordici",
  19. "quindici",
  20. "sedici",
  21. "diciassette",
  22. "diciotto",
  23. "diciannove"
  24. };
  25.  
  26. private static final String[] nomiUnità = nomiCasiSpeciali;
  27.  
  28. private static final String[] nomiDecine = {
  29. null,
  30. "dieci",
  31. "venti",
  32. "trenta",
  33. "quaranta",
  34. "cinquanta",
  35. "sessanta",
  36. "settanta",
  37. "ottanta",
  38. "novanta"
  39. };
  40.  
  41. private boolean èVocale(char c) {
  42. switch(c) {
  43. case 'a':
  44. case 'e':
  45. case 'i':
  46. case 'o':
  47. case 'u':
  48. return true;
  49.  
  50. default:
  51. return false;
  52. }
  53. }
  54.  
  55. private String aggettivo(int n) {
  56. if (n == 1)
  57. return "un";
  58. else
  59. return spell(n);
  60. }
  61.  
  62. private String nienteSeZero(int n) {
  63. if (n == 0)
  64. return "";
  65. else
  66. return spell(n);
  67. }
  68.  
  69. public String spell(int n) {
  70. if (n < 0)
  71. return "meno " + spell(-n);
  72. else {
  73. if (n < nomiCasiSpeciali.length)
  74. return nomiCasiSpeciali[n];
  75. else if (n < 100) {
  76. String decina = nomiDecine[n / 10];
  77. String unità = nomiUnità[n % 10];
  78.  
  79. if (èVocale(unità.charAt(0)))
  80. decina = decina.substring(0, decina.length() - 1);
  81.  
  82. return decina + unità;
  83. } else if (n < 1000) {
  84. int centinaia = n / 100;
  85. return (centinaia == 1 ? "" : nomiUnità[centinaia]) + "cento" + nienteSeZero(n % 100);
  86. } else if (n < 1000000) {
  87. int migliaia = n / 1000;
  88. return (migliaia == 1 ? "mille" : spell(migliaia) + "mila") + nienteSeZero(n % 1000);
  89. } else if (n < 1000000000) {
  90. int milioni = n / 1000000;
  91. return aggettivo(milioni) + (milioni == 1 ? "milione" : "milioni") + nienteSeZero(n % 1000000);
  92. } else {
  93. int miliardi = n / 1000000000;
  94. return aggettivo(miliardi) + (miliardi == 1 ? "miliardo" : "miliardi") + nienteSeZero(n % 1000000000);
  95. }
  96. }
  97. }
  98. }
Add Comment
Please, Sign In to add comment