Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
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.
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".
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.
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,...
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:
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.
sTexto = decenaEnTexto(iDecena);
6. else if (iDecena==1)
7.
sTexto = decenas(10+iUnidad);
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".
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
1.
package programas;
2.
import java.util.Scanner;
3.
4.
5.
6.
7.
8.
String unidades[] =
9.
10.
11.
String especiales[] =
12.
13.
14.
String decenas[] =
15.
16.
17.
18.
19.
20.
21.
22.
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.
28.
29.
if(unid == 0)
30.
System.out.print('\n' + decenas[dec-2]);
31.
else
32.
System.out.print('\n' + decenas[dec-2]
33.
34.
35.
else
36.
37.
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.
97. }