Foro de elhacker.net

Programación => 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
  1. import java.util.Scanner;
  2.  
  3. public class NumberToLetter {
  4.  
  5. private int num; // Almacena el número digitado por el usuario
  6. private int temp; // Almacena cocientes y residuos
  7. private int dM; // Decenas de mil
  8. private int uM; // Unidades de mil
  9. private int cen; // Centenas
  10. private int dec; // Decenas
  11. private int uni; // Unidades
  12. private String letter;
  13.  
  14. public static void main(String args[]) {
  15. new NumberToLetter();
  16. }
  17.  
  18.    public NumberToLetter() {
  19.     Scanner entrada = new  Scanner( System.in );
  20.     System.out.print( "Digite un número entero de 5 dígitos: " );
  21.     num = entrada.nextInt();
  22.     letter = new String();
  23.  
  24. if(num>10&&num<16)
  25. letter = specialCases(num);
  26.  
  27.     else if( num <= 99999) {
  28.     dM = num / 10000;
  29.  
  30.     temp = num % 10000;
  31.     uM = temp / 1000;
  32.  
  33.     temp = temp % 1000;
  34.     cen = temp / 100;
  35.     letter += centenesToLetter(cen)+" ";
  36.  
  37.     temp = temp % 100;
  38.     dec = temp / 10;
  39.     letter += desenesToLetter(dec);
  40.  
  41.     temp = temp % 10;
  42.     uni = temp;
  43.     if(uni>0)
  44.     letter += " y " +unitatsToLetter(uni);
  45.     else
  46.     letter += unitatsToLetter(uni);
  47.     }
  48.     System.out.println(letter);
  49.     System.exit(0);
  50.    }
  51.  
  52.    private String unitatsToLetter(int num){
  53. letter = new String();
  54.     if(num==1)
  55.     letter="Uno";
  56.     if(num==2)
  57.     letter="Dos";
  58.     if(num==3)
  59.     letter="Tres";
  60.     if(num==4)
  61.     letter="Cuatro";
  62.     if(num==5)
  63.     letter="Cinco";
  64.     if(num==6)
  65.     letter="Seis";
  66.     if(num==7)
  67.     letter="Siete";
  68.     if(num==8)
  69.     letter="Ocho";
  70.     if(num==9)
  71.     letter="Nueve";    
  72.  
  73.     return letter;
  74.    }
  75.  
  76.    private String desenesToLetter(int num) {
  77.     letter = new String();
  78.     if(num==1)
  79.     letter="Diez";
  80.     if(num==2)
  81.     letter="Veinte";
  82.     if(num==3)
  83.     letter="Treinta";
  84.     if(num==4)
  85.     letter="Cuarenta";
  86.     if(num==5)
  87.     letter="Cincuenta";
  88.     if(num==6)
  89.     letter="Sesenta";
  90.     if(num==7)
  91.     letter="Setenta";
  92.     if(num==8)
  93.     letter="Ochenta";
  94.     if(num==9)
  95.     letter="Noventa";    
  96.  
  97.     return letter;
  98.    }
  99.  
  100.    private String centenesToLetter(int num) {
  101.     letter = new String();  
  102.     if(num==0)
  103.     return "";
  104.     else if(num==1)
  105.     letter="Ciento";//
  106.     else if(num==5)
  107.     letter="Quinientos";//
  108.     else if(num==7)
  109.     letter="Setecientos";//
  110.     else if(num==9)
  111.     letter="Novenientos"; //
  112.     else {
  113.     letter=unitatsToLetter(num)+"cientos";
  114.     }
  115.  
  116.     return letter;
  117.    }
  118.  
  119.    private String specialCases(int num){
  120.     letter = new String();  
  121.     if(num==11)
  122.     letter="Once";
  123.     else if(num==12)
  124.     letter="Doce";
  125.     else if(num==13)
  126.     letter="Trece";
  127.     else if(num==14)
  128.     letter="Catorce";
  129.     else if(num==15)
  130.     letter="Quince";
  131.  
  132.     return letter;    
  133.    }
  134.  
  135. }
  136.  

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