Java - AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

 
Vista:
sin imagen de perfil

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por carlosn25 (10 intervenciones) el 10/04/2017 02:26:04
Hola..

Necesito hacr un programa que se le ingrese un numero entero hasta el 9999 y se imprima en letras..
AQUI tengo un avanze del codigo pero necesito terminarlo o arreglarlo para que me funcione..

Si alguien me puede ayudar se lo agradeceria..

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
package app;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        String unidades[] = {"cero", "uno", "dos" ,"tres" ,"cuatro" ,"cinco" ,
                "seis" ,"siete" ,"ocho" ,"nueve","diez"};
 
        String especiales[] = {"once", "doce","trece","catorce", "quince",
                "diezciseis", "diecisiete", "dieciocho", "diecinueve",};
 
        String decenas[] = {"veinte", "treinta","cuarenta","cincuenta", "sesenta",
                "setenta", "ochenta", "noventa"};
 
        String centena [] = {"cien", "doscientos", "trecientos", "cuatrocientos",
                "quinientos", "seicientos", "setecientos", "Ochocientos", "novecientos"};
 
        String millares [] = {"mil", "dosmil", "tresmil", "cuatromil", "cincomil",
                "seismil", "sietemil", "ochomil", "nuevemil"};
 
        Scanner scanner = new Scanner(System.in);
        System.out.print("Ingrese un numero entre 0-9999:");
        int num = scanner.nextInt();
 
        if(num>=0 && num<11)
            System.out.print('\n' + unidades[num]);
        else if(num<20)
            System.out.print('\n' + especiales[num]);
        else if(num<1000)
            System.out.print('\n' + centena[num]);
        else if (num<10000){
            int unid = num % 1000;
            int dec = num/1000;
            int cen = num%1000;
            int mill = num/1000;
            if(unid == 0)
                System.out.print(millares[mill] + " " + centena[cen] + " " + decenas[dec] + " " + unidades[unid]);
            else
                System.out.print(millares[mill] + " " + centena[cen] + " " + decenas[dec] + " y " + unidades[unid]);
        }
        else
            System.out.print("El numero debe ser menor a 9999");
 
 
    }
}


O si alguien tiene alguna otra forma de hacerla se lo agradeceria que compartiera el codigo..

SALUDOS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por Jose (1 intervención) el 10/04/2017 04:06:46
Los números en el sistema decimal tienen 3 categorías básicas:
unidad, decena y centena.
Los números vienen por orden.
Primero está el orden de las unidades de 0-999.
Luego el orden de los millares de 1000-999,999.
pero en ambos aplican las categorías básicas.
Elimina el arreglo para los millares que tienes,
divide la cantidad en grupos de tres dígitos y
luego haces un ciclo que le de el nombre a cada grupo de números
si pertenece al grupo de los millares solo tendrías que colocar la palabra "mil" al final del nombre.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por Andrés (340 intervenciones) el 10/04/2017 18:55:54
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/**
 *
 * @author andreas
 */
public class NumberToLetters {
 
    private final int MAX_VALUE = 9999;
    private int[] digitos;
 
    private final String[][] letters = {
        {"uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"},
        {"diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa"},
        {"ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seicientos", "setecientos", "ochocientos", "novecientos"},
        {"mil", "dos mil", "tres mil", "cuatro mil", "cinco mil", "seis mil", "siete mil", "ocho mil", "nueve mil"}
    };
 
    private final String[][] especial = {
        {
            "diez",
            "once",
            "doce",
            "trece",
            "catorce",
            "quince",
            "dieciséis",
            "diecisiete",
            "dieciocho",
            "diecinueve"
        },
        {
            "veinte",
            "veintiuno",
            "veintidós",
            "veintitrés",
            "veinticuatro",
            "veinticinco",
            "veintiséis",
            "veintisiete",
            "veintiocho",
            "veintinueve"
        }
    };
 
    private void inicializaDigitos(int numero) {
 
        String numeroToString = Integer.toString(numero);
 
        digitos = new int[numeroToString.length()];
        int j = 0;
        for (int i = numeroToString.length() - 1; i > 0; i--) {
            digitos[j++] = Integer.parseInt(numeroToString.substring(i, i + 1));
        }
 
        digitos[j] = Integer.parseInt(numeroToString.substring(0, 1));
 
    }
 
    private String procesarDecenas() {
 
        if (1 == digitos.length) {
            return letters[0][digitos[0] - 1];
        } else if (digitos.length >= 2) {
            if ((1 == digitos[1] || 2 == digitos[1])) {
                return especial[digitos[1] - 1][digitos[0]];
            } else {
                StringBuilder sb = new StringBuilder();
 
                for (int i = 1; i >= 0; i--) {
 
                    if (0 == digitos[i]) {
                        continue;
                    }
 
                    sb.append(letters[i][digitos[i] - 1]);
                    sb.append(" y ");
 
                }
                return sb.substring(0, sb.length() - 2).toString();
            }
        }
 
        return null;
 
    }
 
    private String procesarHastaDecenas() {
 
        StringBuilder sb = new StringBuilder();
        for (int i = digitos.length - 1; i >= 2; i--) {
 
            if (0 == digitos[i]) {
                continue;
            }
 
            sb.append(letters[i][digitos[i] - 1]);
 
            sb.append(" ");
        }
 
        return sb.toString();
 
    }
 
    public String obtenerLetras() {
 
        StringBuilder sb = new StringBuilder();
        sb.append(procesarHastaDecenas());
        sb.append(procesarDecenas());
        return sb.toString();
    }
 
    public NumberToLetters(int numero) {
 
        if (0 > numero || MAX_VALUE < numero) {
            throw new IllegalArgumentException("Verifique el numero");
        }
 
        inicializaDigitos(numero);
 
    }
 
    public static void main(String[] args) {
 
        NumberToLetters ntl = new NumberToLetters(726);
 
        System.out.println(ntl.obtenerLetras());
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por carlos (10 intervenciones) el 10/04/2017 19:14:25
Hola Andres..

El codigo me da este error..

1
2
3
4
5
6
7
8
Exception in thread "main" java.lang.ClassNotFoundException: app.Main
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:123)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por Andrés (340 intervenciones) el 10/04/2017 19:17:16
Cómo lo estas ejecutando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por carlosn25 (10 intervenciones) el 10/04/2017 20:01:24
Estoy usando InteliJ IDEA la version gratuita..

Cree un archivo llamado NumberToLetters.java, lo pege y lo corri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por Andrés (340 intervenciones) el 10/04/2017 20:10:51
Que raro, prueba corriendo solo el archivo, no el proyecto, o cambia la clase principal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por carlos (10 intervenciones) el 10/04/2017 20:42:20
Gracias, ya me corrio..

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por carlos (10 intervenciones) el 10/04/2017 20:59:59
una pregunta..
De casualidad como hiciera para ser la preguntar por consola para preguntar el numero, y despues imprimir el texto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por Andrés (340 intervenciones) el 10/04/2017 22:15:05
Podrías reemplazar el main por este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
 
        Scanner scanner = null;
 
        try {
            System.out.print("Ingresa numero: ");
            scanner = new Scanner(System.in);
            int numero = scanner.nextInt();
            NumberToLetters ntl = new NumberToLetters(numero);
 
            System.out.println(ntl.obtenerLetras());
        } catch (Exception e) {
        } finally {
            if (null != scanner) {
                scanner.close();
            }
        }
 
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por carlos (10 intervenciones) el 10/04/2017 22:22:45
Muchas Gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por charlie (10 intervenciones) el 19/04/2017 16:58:23
Hola Andres nuevamente..

Es posible utilizar ese codigo para correrlo en JAVAFX?

Ya que mi asignación es en JAVA FX..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA! PROGRAMA PARA LEER NUMERO Y IMPRIMIRLO EN LETRAS

Publicado por Mario gonzalez Paula (1 intervención) el 26/04/2018 02:20:54
que tal ....disculpa si me podrías pasar el código. bueno si es que ya lo tienes completo por favor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar