Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   JAVA (https://www.clubdelphi.com/foros/forumdisplay.php?f=16)
-   -   Convertir numero en cadena (https://www.clubdelphi.com/foros/showthread.php?t=9330)

rex 21-04-2004 00:01:45

Convertir numero en cadena
 
alguien me puede indicar en donde conseguir el algoritmo en java para convertir una cantidad numerica en una cadena??


1245.00 = Mil doscientos Cuarenta y cinco

santana 21-04-2004 01:49:53

Aquí......

santana 26-05-2004 16:38:58

Hola a todos.

A pesar de que no es tan difícil desarrollar el código (un poco de iniciativa e imaginación, chic@s!!!) o en su defecto, buscarlo en la red (no dudo que debe ser sencillo encontrarlo), aquí os dejo un mini-ejemplo de la conversión de números a cadenas.

No es que me lo hayan pedido mis innumerables fans, es que me he dado cuenta de que este hilo es bastante visitado y al buscar en el google por las palabras java+convertir+numero+string me he dado cuenta de que el primer enlace que sale, es precisamente el de este thread ;).

Espero que os sea útil o al menos os sirva de orientación.
Saludos.

Código:

  public class conversionNumeroEnCadena {
            private int flag;
            public int numero;
            public String num;
            public String num_letra;
            public String num_letras;
            public String num_letram;
                   
            public conversionNumeroEnCadena(){
                    numero = 0;
                    flag=0;
            }
            public conversionNumeroEnCadena(int n){
                    numero = n;
                    flag=0;
            }
   
           
      private String unidad(int numero){
                   
                    switch (numero){
                    case 9:
                                    num = "nueve";
                                    break;
                    case 8:
                                    num = "ocho";
                                    break;
                    ...........
                    ...........
   
                    case 2:
                                    num = "dos";
                                    break;
                    case 1:
                                    if (flag == 0)
                                        num = "uno";
                                    else
                                        num = "un";
                                    break;
                    case 0:
                                    num = "";
                                    break;
                    }
                    return num;
            }
           
            private String decena(int numero){
           
                    if (numero >= 90 && numero <= 99)
                    {
                            num_letra = "noventa ";
                            if (numero > 90)
                                    num_letra =
                            num_letra.concat("y ").concat(unidad(numero - 90));
                    }
                    else if (numero >= 80 && numero <= 89)
                    {
                            num_letra = "ochenta ";
                            if (numero > 80)
                                    num_letra =
                            num_letra.concat("y ").concat(unidad(numero - 80));
                    }
   
                    ...........
                    ...........
   
                            if (numero == 20)
                                    num_letra = "veinte ";
                            else
                                    num_letra =
                                "veinti".concat(unidad(numero - 20));
                    }
                    else if (numero >= 10 && numero <= 19)
                    {
                            switch (numero){
                            case 10:
   
                                    num_letra = "diez ";
                                    break;
   
                            case 11:
   
                                    num_letra = "once ";
                                    break;
   
                            case 12:
   
                                    num_letra = "doce ";
                                    break;
   
                            ..............
                            ..............
                            case 19:
                           
                                    num_letra = "diecinueve ";
                                    break;
                           
                            }       
                    }
                    else
                            num_letra = unidad(numero);
   
            return num_letra;
            }       
   
            private String centena(int numero){
                    if (numero >= 100)
                    {
                            if (numero >= 900 && numero <= 999)
                            {
                                    num_letra = "novecientos ";
                                    if (numero > 900)
                                        num_letra =
                                  num_letra.concat(decena(numero - 900));
                            }
                        else if (numero >= 800 && numero <= 899)
                            {
                                    num_letra = "ochocientos ";
                                    if (numero > 800)
                                        num_letra =
                                  num_letra.concat(decena(numero - 800));
                            }
   
                            ...........
                            ...........
   
                        else if (numero >= 200 && numero <= 299)
                            {
                                    num_letra = "doscientos ";
                                    if (numero > 200)
                                        num_letra =
                                  num_letra.concat(decena(numero - 200));
                            }
                        else if (numero >= 100 && numero <= 199)
                            {
                                    if (numero == 100)
                                        num_letra = "cien ";
                                    else
                                        num_letra =
                                  "ciento ".concat(decena(numero - 100));
                            }
                    }
                    else
                            num_letra = decena(numero);
                   
                    return num_letra;       
            }       
   
            private String miles(int numero){
                    if (numero >= 1000 && numero <2000){
                            num_letram =
                            ("mil ").concat(centena(numero%1000));
                    }
                    if (numero >= 2000 && numero <10000){
                            flag=1;
                            num_letram =
                            unidad(numero/1000).concat("mil").concat
                            (centena(numero%1000));
                    }
                    if (numero < 1000)
                            num_letram = centena(numero);
                   
                    return num_letram;
        }                                       
   
           
            public String convertirLetras(int numero){
                    num_letras = miles(numero);
                    return num_letras;
            }       
    }


marto 26-05-2004 18:17:33

Esto es "pseudojava", pero traducirlo a "pure java" es sencillo. Faltaría tratar los casos especiales como el "once", "doce"... pero de todas maneras creo que así queda más sencillo


Código:

public static String[] literales =
        [
        ["", "uno", "dos", "tres",..., "nueve"],
        ["", "diez", "veinte", ... "noventa"],
        ["", "ciento", "doscientos", "trescientos"...],
        ...
        ]
 
public static String tranforma(int num){
        int cont = 0;
        int div = num;
        String res = "";
 
        while ( div > 0){
        res = literales[cont][div % 10] + res;
        div = int / 10;
//esto se ha de truncar a int... pero ahora mismo no recuerdo como se hacía
        cont ++;
        }
        return(res);
 
}


chikipow 24-10-2007 04:00:09

gracias por el codigo santana lo buscaba desde hace tiempo, crees que puedas agregar la parte de los millones, decenas y centenas de 1000 y los decimales, realmente lo necesito para un proyecto

PD: tengo un problema cuando lo complete y corri en java salia "ilegar start of type" cuando decia if o else if

Arcioneo 24-10-2007 17:39:03

Nada tio
 
Cita:

Empezado por chikipow (Mensaje 240690)
gracias por el codigo santana lo buscaba desde hace tiempo, crees que puedas agregar la parte de los millones, decenas y centenas de 1000 y los decimales, realmente lo necesito para un proyecto

PD: tengo un problema cuando lo complete y corri en java salia "ilegar start of type" cuando decia if o else if



Que no sabes lo que es PSEUDOCODIGO?

chikipow 25-10-2007 03:09:02

realmente no mucho, apenas estoy empezando a programar

eduarcol 25-10-2007 03:28:11

Cita:

Empezado por chikipow (Mensaje 240951)
realmente no mucho, apenas estoy empezando a programar

Pues deberias estudiar un poco mas, ah y por cierto ya vistes la fecha de este hilo¿¿¿


La franja horaria es GMT +2. Ahora son las 13:01:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi