Está en la página 1de 11

Java Convertir un nmero a texto con Java

abril 8, 2012 por Vctor Cuervo3 Comentarios

Imprimir

Vamos a ver como construir un mtodo con Java al cual le pasemos un nmero de tres
dgitos: unidades, decenas y centenas y nos lo transforme a texto. Es decir, el 534 nos lo
transforme en "quinientos treinta y cuatro", es el proceso de convertir un nmero a texto
con Java.
Lo primero para convertir un nmero a texto con Java ser crear mtodos de apoyo. El primer
mtodo de apoyo es el que dado una unidad nos la transforma en texto.

1. public static String unidadEnTexto(int iNumero){


2. // Mtodo que dado un nmero me lo devuelve en texto
3.
4.

switch(iNumero){
case 1:

5.
6.

return "uno";
case 2:

7.
8.

return "dos";
case 3:

9.
10.

return "tres";
case 4:

11.
12.

return "cuatro";
case 5:

13.
14.

return "cinco";
case 6:

15.
16.

return "seis";
case 7:

17.
18.

return "siete";
case 8:

19.
20.

return "ocho";
case 9:

21.
22.

return "nueve";
case 0:

23.
24.

return "cero";
default:

25.

return "";

26. }
27. }

El siguiente ser el de las decenas. Es decir, le pasaremos un nmero que represente las
decenas y nos devolver el texto. Si le pasamos un 2 nos devolver "veinte".

1. public static String decenaEnTexto(int iDecena){


2.

switch (iDecena){

3.

case 1:

4.
5.

return "diez";
case 2:

6.
7.

return "veinte";
case 3:

8.
9.

return "treinta";
case 4:

10.
11.

return "cuarenta";
case 5:

12.
13.

return "cincuenta";
case 6:

14.
15.

return "sesenta";
case 7:

16.
17.

return "setenta";
case 8:

18.
19.

return "ochenta";
case 9:

20.
21.

return "noventa";
default:

22.
23.

return "";
}

24. }

Todas las decenas las podemos montar con el texto de la decena y el texto de la unidad,
aadiendo un "y" en medio. As 22 sera "veinte y dos". Hay un caso especial a tener en

cuenta y este es el de las decenas del diez. As que para ese caso nos montamos otro mtodo
de apoyo.

1. public static String decenas(int iDecena){


2.

switch (iDecena){

3.

case 11:

4.
5.

return "once";
case 12:

6.
7.

return "doce";
case 13:

8.
9.

return "trece";
case 14:

10.
11.

return "catorce";
case 15:

12.
13.

return "quince";
case 16:

14.
15.

return "dieciseis";
case 17:

16.
17.

return "diecisiete";
case 18:

18.
19.

return "dieciocho";
case 19:

20.
21.

return "diecinueve";
default:

22.
23.

return "";
}

24. }

Y lo ltimo igual para las centenas. Si bien es verdad que aqu solo se nos devolver el
relativo a los cientos, quinientos y novecientos. Ya que para el testo de centenas lo podemos
montar mediante la unidad y aadiendo el sufijo cientos. As tendremos dos-cientos, trescientos,...

1. public static String centenaEnTexto(int iCentena){


2.

switch (iCentena){

3.

case 1:

4.
5.

return "ciento";
case 5:

6.
7.

return "quinientos";
case 9:

8.
9.

return "novecientos";
default:

10.
11.
12. }

return "";
}

Ahora solo nos queda desmontar el nmero e ir llamando a las funciones de apoyo
necesarias. Para ir obteniendo por dgitos nos apoyamos en el mdulo y divisin de 10. Ya
que el mdulo nos deja el dgito y la divisin el resto del nmero.
As, para las unidades sera:

1. int iUnidad = iNumero%10;


2. iNumero = iNumero/10;
3. sTexto = unidadEnTexto(iUnidad);

La conversin de la unidad ha sido sencilla ya que solo hemos tenido que llamar al mtodo
unidadEnTexto.
Vamos con las decenas, para obtener la decena el mismo mecanismo que antes.

1. int iDecena = iNumero%10;


2. iNumero = iNumero/10;
3.
4. if ((iUnidad==0) && (iDecena>0))
5.

sTexto = decenaEnTexto(iDecena);

6. else if (iDecena==1)
7.

sTexto = decenas(10+iUnidad);

8. else if (iDecena > 1)


9.

sTexto = decenaEnTexto(iDecena) + " y " + sTexto;

Aqui tenemos tres casos.


o

Si la unidad era un cero, pedimos la decena y ser el texto nico.

Si la decena empieza por uno, caso especial y por lo tantto llamamos al mtodo de las

decenas.
Otros casos componemos con la decena y la unidad juntas con un "y".

El ltimo caso, las centenas.

1. int iCentena = iNumero%10;


2.
3. if ((iCentena!=1) && (iCentena!=5) && (iCentena!=9) && (iCentena!=0))
4.

sTexto = unidadEnTexto(iCentena) + "cientos" + " " + sTexto;

5. else if ((iCentena==1) || (iCentena==5) || (iCentena==9))


6.

sTexto = centenaEnTexto(iCentena) + " " + sTexto;

En este caso solo hay el dilema del 1, 5 y 9. As que un if y solucionado. El resto de las
centenas las montamos con la unidad en texto ms el texto "cientos".
As, finalmente, hemos dejado en sTexto el resultado de convertir un nmero a texto con Java

Algoritmo para Convertir Nmeros a Letras - Cdigo fuente


en Java
Problema
Desarrollar un programa donde se ingrese un nmero y lo convierta en letras.
Solucin
Esta programa solo acepta nmeros que van desde el cero al noventa y nueve, el usuario
ingresa un nmero y la aplicacin retornara dicho nmero convertido en letras.
Ejemplo
- Entrada: 41
- Salida: cuarenta y uno.
Cdigo Fuente en Java
view plainprint?

1.

package programas;

2.

import java.util.Scanner;

3.
4.

public class P01_numeros_a_letras {

5.
6.

public static void main(String[] args) {

7.
8.

String unidades[] =

9.

{"cero", "uno", "dos" ,"tres" ,"cuatro" ,"cinco" ,

10.

"seis" ,"siete" ,"ocho" ,"nueve","diez"};

11.

String especiales[] =

12.

{"once", "doce","trece","catorce", "quince",

13.

"diezciseis", "diecisiete", "dieciocho", "diecinueve"};

14.

String decenas[] =

15.

{"veinte", "treinta","cuarenta","cincuenta", "sesenta",

16.
17.

"setenta", "ochenta", "noventa"};

18.

Scanner scanner = new Scanner(System.in);

19.

System.out.print("Ingrese un numero entre 0-99: ");

20.

int num = scanner.nextInt();

21.
22.

if(num>=0 && num<11)

23.

System.out.print('\n' + unidades[num]);

24.

else if(num<20)

25.

System.out.print('\n' + especiales[num-11]);

26.

else if(num<100){

27.

int unid = num % 10;

28.

int dec = num/10;

29.

if(unid == 0)

30.

System.out.print('\n' + decenas[dec-2]);

31.

else

32.

System.out.print('\n' + decenas[dec-2]

33.

+ " y " + unidades[unid]);

34.

35.

else

36.
37.

System.out.print("El numero debe ser menor a 100");


}

38. }
39. public static string ToText(this int value) {
40. string Num2Text = "";
41. if (value < 0) return "menos " + Math.Abs(value).ToText();
42.
43. if (value == 0) Num2Text = "cero";
44. else if (value == 1) Num2Text = "uno";
45. else if (value == 2) Num2Text = "dos";
46. else if (value == 3) Num2Text = "tres";
47. else if (value == 4) Num2Text = "cuatro";
48. else if (value == 5) Num2Text = "cinco";

49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.

else if (value == 6) Num2Text = "seis";


else if (value == 7) Num2Text = "siete";
else if (value == 8) Num2Text = "ocho";
else if (value == 9) Num2Text = "nueve";
else if (value == 10) Num2Text = "diez";
else if (value == 11) Num2Text = "once";
else if (value == 12) Num2Text = "doce";
else if (value == 13) Num2Text = "trece";
else if (value == 14) Num2Text = "catorce";
else if (value == 15) Num2Text = "quince";
else if (value < 20) Num2Text = "dieci" + (value - 10).ToText();
else if (value == 20) Num2Text = "veinte";
else if (value < 30) Num2Text = "veinti" + (value - 20).ToText();
else if (value == 30) Num2Text = "treinta";
else if (value == 40) Num2Text = "cuarenta";
else if (value == 50) Num2Text = "cincuenta";
else if (value == 60) Num2Text = "sesenta";
else if (value == 70) Num2Text = "setenta";
else if (value == 80) Num2Text = "ochenta";
else if (value == 90) Num2Text = "noventa";
else if (value < 100)
{
int u = value % 10;
Num2Text = string.Format("{0} y {1}", ((value / 10) * 10).ToText(), (u
== 1 ? "un" : (value % 10).ToText()));
73. }
74. else if (value == 100) Num2Text = "cien";
75. else if (value < 200) Num2Text = "ciento " + (value - 100).ToText();
76. else if ((value == 200) || (value == 300) || (value == 400) || (value ==
600) || (value == 800))
77.
Num2Text = ((value / 100)).ToText() + "cientos";
78. else if (value == 500) Num2Text = "quinientos";
79. else if (value == 700) Num2Text = "setecientos";
80. else if (value == 900) Num2Text = "novecientos";
81. else if (value < 1000) Num2Text = string.Format("{0} {1}", ((value / 100)
* 100).ToText(), (value % 100).ToText());
82. else if (value == 1000) Num2Text = "mil";
83. else if (value < 2000) Num2Text = "mil " + (value % 1000).ToText();
84. else if (value < 1000000)
85. {
86.
Num2Text = ((value / 1000)).ToText() + " mil";
87.
if ((value % 1000) > 0) Num2Text += " " + (value % 1000).ToText();
88. }
89. else if (value == 1000000) Num2Text = "un milln";
90. else if (value < 2000000) Num2Text = "un milln " + (value %
1000000).ToText();
91. else if (value < int.MaxValue)
92. {
93.
Num2Text = ((value / 1000000)).ToText() + " millones";
94.
if ((value - (value / 1000000) * 1000000) > 0) Num2Text += " " + (value
- (value / 1000000) * 1000000).ToText();
95. }
96. return Num2Text;

97. }

También podría gustarte