Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class NumberSpellerItalian implements NumberSpeller {
- private static final String[] nomiCasiSpeciali = {
- "zero",
- "uno",
- "due",
- "tre",
- "quattro",
- "cinque",
- "sei",
- "sette",
- "otto",
- "nove",
- "dieci",
- "undici",
- "dodici",
- "tredici",
- "quattordici",
- "quindici",
- "sedici",
- "diciassette",
- "diciotto",
- "diciannove"
- };
- private static final String[] nomiUnità = nomiCasiSpeciali;
- private static final String[] nomiDecine = {
- null,
- "dieci",
- "venti",
- "trenta",
- "quaranta",
- "cinquanta",
- "sessanta",
- "settanta",
- "ottanta",
- "novanta"
- };
- private boolean èVocale(char c) {
- switch(c) {
- case 'a':
- case 'e':
- case 'i':
- case 'o':
- case 'u':
- return true;
- default:
- return false;
- }
- }
- private String aggettivo(int n) {
- if (n == 1)
- return "un";
- else
- return spell(n);
- }
- private String nienteSeZero(int n) {
- if (n == 0)
- return "";
- else
- return spell(n);
- }
- public String spell(int n) {
- if (n < 0)
- return "meno " + spell(-n);
- else {
- if (n < nomiCasiSpeciali.length)
- return nomiCasiSpeciali[n];
- else if (n < 100) {
- String decina = nomiDecine[n / 10];
- String unità = nomiUnità[n % 10];
- if (èVocale(unità.charAt(0)))
- decina = decina.substring(0, decina.length() - 1);
- return decina + unità;
- } else if (n < 1000) {
- int centinaia = n / 100;
- return (centinaia == 1 ? "" : nomiUnità[centinaia]) + "cento" + nienteSeZero(n % 100);
- } else if (n < 1000000) {
- int migliaia = n / 1000;
- return (migliaia == 1 ? "mille" : spell(migliaia) + "mila") + nienteSeZero(n % 1000);
- } else if (n < 1000000000) {
- int milioni = n / 1000000;
- return aggettivo(milioni) + (milioni == 1 ? "milione" : "milioni") + nienteSeZero(n % 1000000);
- } else {
- int miliardi = n / 1000000000;
- return aggettivo(miliardi) + (miliardi == 1 ? "miliardo" : "miliardi") + nienteSeZero(n % 1000000000);
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment