• Lenguaje

    Java

  • Descripción

    Pide un número entero y muestra su valor en letra

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import java.util.Scanner;

public class Letra {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Ingrese una cantidad: ");
        long cantidad = in.nextLong();
        System.out.println();
        if (cantidad < 0) {
            System.out.print("menos ");
            cantidad = -cantidad;
        }
        if (cantidad==0)
            System.out.print("cero");
        else
            millonesEnLetra(cantidad);
        System.out.println('\n');
    }

    static final String[] unidades = {null, "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"};
    static final String[] decimas  = {null, "diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa"};
    static final String[] diez_y   = {null, "once", "doce", "trece", "catorce", "quince"};
    static final String[] centenas = {null, "ciento", null, null, null, "quinientos", null, "setecientos", null, "novecientos"};
   
    static void unidadesEnLetra(long cantidad) {
        byte unidad  = (byte) (cantidad % 10);
        byte decima  = (byte) ((cantidad / 10) % 10);
        byte centena = (byte) ((cantidad / 100) % 10);
        if (centena!=0)
            if (centenas[centena]==null)
                System.out.print(unidades[centena] + "cientos");
            else if (centena!=1 || unidad!=0 || decima!=0)
                System.out.print(centenas[centena]);
            else
                System.out.print("cien");
        if (unidad!=0 || decima!=0) {
            if (centena!=0)
                System.out.print(" ");
            if (decima==0)
                System.out.print(unidades[unidad]);
            else if (unidad==0)
                System.out.print(decimas[decima]);
            else if (decima==1 && unidad>=1 && unidad<=5)
                System.out.print(diez_y[unidad]);
            else if (decima==1)
                System.out.print("dieci" + unidades[unidad]);
            else if (decima==2)
                System.out.print("veinti" + unidades[unidad]);
            else
                System.out.print(decimas[decima] + " y " + unidades[unidad]);
        }
    }

    static void millaresEnLetra(long cantidad) {
        long unidades = cantidad % 1000;
        long miles    = (cantidad / 1000) % 1000;
        if (miles>1)
            unidadesEnLetra(miles);
        if (miles!=0)
            System.out.print("mil");
        if (unidades!=0 && miles!=0)
            System.out.print(" ");
        unidadesEnLetra(unidades);
    }

    static void millonesEnLetra(long cantidad) {
        long unidades = cantidad % 1000000L;
        long millares = (cantidad / 1000000L) % 1000000L;
        if (millares>1) {
            millaresEnLetra(millares);
            System.out.print(" millones");
        }
        else if (millares!=0)
            System.out.print("un mill\242n");
        if (unidades!=0 && millares!=0)
            System.out.print(" ");
        millaresEnLetra(unidades);
    }

}