Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Da numero a lettere

    Salve ragazzi! c'è quanche metodo carino che mi converte una cifra numerica in lettere?

    1254.00 -> milleduecentocinquantaquattro.00
    [ SimplyMepis 8 ]Copyleft
    www.mepisitalia.org IL SITO ITALIANO UFFICIALE DI MEPIS
    www.salentomovida.it LA MOVIDA DEL SALENTO HA UN NUOVO PUNTO D'INCONTRO SUL WEB
    [ SUD SOUND SYSTEM MINA FUECU INTRA ALLU SALENTU ]

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Da numero a lettere

    Originariamente inviato da alex86
    Salve ragazzi! c'è quanche metodo carino che mi converte una cifra numerica in lettere?

    1254.00 -> milleduecentocinquantaquattro.00
    No, devi farlo tu e chiaramente devi sapere quali sono le regole, nella lingua italiana, per formare il numero letterale. (perché un'altra lingua ha sicuramente tutt'altre regole).
    In pratica devi individuare le regole generali, gli eventuali casi specifici ecc... per formare un qualunque numero letterale.

    Io l'avevo fatto in "C" (ed ho ancora il sorgente, fortunatamente) e mi ci vorrebbe solo un pochino di tempo per riscriverlo in Java.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    magari anche a postarmelo in c e procedo io alla conversione..
    [ SimplyMepis 8 ]Copyleft
    www.mepisitalia.org IL SITO ITALIANO UFFICIALE DI MEPIS
    www.salentomovida.it LA MOVIDA DEL SALENTO HA UN NUOVO PUNTO D'INCONTRO SUL WEB
    [ SUD SOUND SYSTEM MINA FUECU INTRA ALLU SALENTU ]

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Se può interessare, posto il codice completo per convertire un numero nella sua rappresentazione letterale. Commenti, critiche, segnalazioni di errori, sono come al solito, ben accetti.

    codice:
    public class TestNumeroLetterale
    {
        public static void main (String[] args)
        {
            if (args.length == 1)
            {
                try
                {
                    test (Integer.parseInt (args[0]));
                }
                catch (Exception e)
                {
                    System.out.println (e);
                }
            }
            else
            {
                test (0);
                test (1);
                test (12);
                test (123);
                test (1234);
                test (12345);
                test (123456);
                test (1234567);
                test (12345678);
                test (123456789);
                test (1234567890);
            }
        }
    
        public static void test (int num)
        {
            System.out.println (num + " = " + NumeroLetterale.format (num));
        }
    }
    
    
    class NumeroLetterale
    {
        private static final String[] strings00X =
        {
            "", "uno", "due", "tre", "quattro",
            "cinque", "sei", "sette", "otto", "nove"
        };
    
        private static final String[] strings01X =
        {
            "dieci", "undici", "dodici", "tredici", "quattordici",
            "quindici", "sedici", "diciassette", "diciotto", "diciannove"
        };
    
        private static final String[] strings0X0 =
        {
            "", "", "vent", "trent", "quarant",
            "cinquant", "sessant", "settant", "ottant", "novant"
        };
    
        private static void formatGroup (StringBuilder sb, int group, String unit1, String unit2)
        {
            group %= 1000;
    
            if (group == 1)
            {
                sb.append (unit1);
            }
            else
            {
                int digit1 = group / 100;
                int digit2 = (group / 10) % 10;
                int digit3 = group % 10;
    
                if (digit1 > 0)
                {
                    if (digit1 > 1)
                        sb.append (strings00X[digit1]);
    
                    sb.append ("cento");
                }
    
                if (digit2 == 0)
                    sb.append (strings00X[digit3]);
                else if (digit2 == 1)
                    sb.append (strings01X[digit3]);
                else
                {
                    sb.append (strings0X0[digit2]);
    
                    if (digit3 != 1 && digit3 != 8)
                        sb.append (digit2 == 2 ? 'i' : 'a');
    
                    sb.append (strings00X[digit3]);
                }
    
                if (group != 0)
                    sb.append (unit2);
            }
        }
    
        public static String format (int number)
        {
            if (number < 0)
                throw new IllegalArgumentException ("number cannot be negative");
    
            StringBuilder sb = new StringBuilder ();
    
            if (number == 0)
                sb.append ("zero");
            else
            {
                formatGroup (sb, number / 1000000000, "unmiliardo", "miliardi");
                formatGroup (sb, number / 1000000, "unmilione", "milioni");
                formatGroup (sb, number / 1000, "mille", "mila");
                formatGroup (sb, number, "uno", "");
            }
    
            return sb.toString ();
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.