al ingresar un numero como puedo hacer para que el mensaje sea en letras

Iniciado por fyn, 1 Mayo 2010, 17:43 PM

0 Miembros y 1 Visitante están viendo este tema.

fyn

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

Debci

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

sapito169

este es un problema dificil
la recomendación que te hago es que no usas operaciones matemáticas solo trabaja el numero como cadena

1mpuls0

Tal vez pueda ayudarte con una parte del código... en unos 10 minutos a ver que hago
abc

1mpuls0

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!
abc

Debci


Leyer

No le hagas la terea :xD con lo que se dijo anteriormente es suficiente