Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: fyn en 1 Mayo 2010, 17:43 PM

Título: al ingresar un numero como puedo hacer para que el mensaje sea en letras
Publicado por: fyn en 1 Mayo 2010, 17:43 PM
como realizar el ejercicio en java que al ingresar un numero de 0 a 99.999, el mensaje sea en letras

ejemplo:
numero ingresado= 99
mensaje el numero es= noventa y nueve
Título: Re: al ingresar un numero como puedo hacer para que el mensaje sea en letras
Publicado por: Debci en 1 Mayo 2010, 19:42 PM
Amigo necesitas analizar sintacticamente las expresiones.
Con ello repercute expresiones regulares y tal, me explico:

Detectar numero de cifras (supongamos 2)
la primera será noventa, ochenta, setenta...
la segunda será los numeros convencionales, osea uno, dos, se cojen las dos string y se apone una y, quedando
Noventa y Nueve, en el caso de 15, 16, 17... se crea eespecificamente para estos y ya esta.

Esa seria la idea logica.

Saludos
Título: Re: al ingresar un numero como puedo hacer para que el mensaje sea en letras
Publicado por: sapito169 en 1 Mayo 2010, 20:51 PM
este es un problema dificil
la recomendación que te hago es que no usas operaciones matemáticas solo trabaja el numero como cadena
Título: Re: al ingresar un numero como puedo hacer para que el mensaje sea en letras
Publicado por: 1mpuls0 en 2 Mayo 2010, 05:50 AM
Tal vez pueda ayudarte con una parte del código... en unos 10 minutos a ver que hago
Título: Re: al ingresar un numero como puedo hacer para que el mensaje sea en letras
Publicado por: 1mpuls0 en 2 Mayo 2010, 05:51 AM
Hola, yo lo hariá algo así

Código (java) [Seleccionar]

import java.util.Scanner;

public class NumberToLetter {

private int num; // Almacena el número digitado por el usuario
private int temp; // Almacena cocientes y residuos
private int dM; // Decenas de mil
private int uM; // Unidades de mil
private int cen; // Centenas
private int dec; // Decenas
private int uni; // Unidades
private String letter;

public static void main(String args[]) {
new NumberToLetter();
}

   public NumberToLetter() {
    Scanner entrada = new  Scanner( System.in );
    System.out.print( "Digite un número entero de 5 dígitos: " );
    num = entrada.nextInt();
    letter = new String();

if(num>10&&num<16)
letter = specialCases(num);

    else if( num <= 99999) {
    dM = num / 10000;
   
    temp = num % 10000;
    uM = temp / 1000;
   
    temp = temp % 1000;
    cen = temp / 100;
    letter += centenesToLetter(cen)+" ";
   
    temp = temp % 100;
    dec = temp / 10;
    letter += desenesToLetter(dec);
   
    temp = temp % 10;
    uni = temp;
    if(uni>0)
    letter += " y " +unitatsToLetter(uni);
    else
    letter += unitatsToLetter(uni);
    }
    System.out.println(letter);
    System.exit(0);
   }
   
   private String unitatsToLetter(int num){
letter = new String();
    if(num==1)
    letter="Uno";
    if(num==2)
    letter="Dos";
    if(num==3)
    letter="Tres";
    if(num==4)
    letter="Cuatro";
    if(num==5)
    letter="Cinco";
    if(num==6)
    letter="Seis";
    if(num==7)
    letter="Siete";
    if(num==8)
    letter="Ocho";
    if(num==9)
    letter="Nueve";    
   
    return letter;
   }
   
   private String desenesToLetter(int num) {
    letter = new String();
    if(num==1)
    letter="Diez";
    if(num==2)
    letter="Veinte";
    if(num==3)
    letter="Treinta";
    if(num==4)
    letter="Cuarenta";
    if(num==5)
    letter="Cincuenta";
    if(num==6)
    letter="Sesenta";
    if(num==7)
    letter="Setenta";
    if(num==8)
    letter="Ochenta";
    if(num==9)
    letter="Noventa";    
   
    return letter;
   }
   
   private String centenesToLetter(int num) {
    letter = new String();  
    if(num==0)
    return "";
    else if(num==1)
    letter="Ciento";//
    else if(num==5)
    letter="Quinientos";//
    else if(num==7)
    letter="Setecientos";//
    else if(num==9)
    letter="Novenientos"; //
    else {
    letter=unitatsToLetter(num)+"cientos";
    }
   
    return letter;
   }
   
   private String specialCases(int num){
    letter = new String();  
    if(num==11)
    letter="Once";
    else if(num==12)
    letter="Doce";
    else if(num==13)
    letter="Trece";
    else if(num==14)
    letter="Catorce";
    else if(num==15)
    letter="Quince";
   
    return letter;    
   }
   
}


Lo hice algo rápido así que tiene algunos defectos  :xD, pero tal vez pueda ayudarte.

Un Saludo!
Título: Re: al ingresar un numero como puedo hacer para que el mensaje sea en letras
Publicado por: Debci en 2 Mayo 2010, 10:45 AM
Es mas o menos como yo habia sugerido.

Saludos
Título: Re: al ingresar un numero como puedo hacer para que el mensaje sea en letras
Publicado por: Leyer en 2 Mayo 2010, 21:31 PM
No le hagas la terea :xD con lo que se dijo anteriormente es suficiente