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
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
este es un problema dificil
la recomendación que te hago es que no usas operaciones matemáticas solo trabaja el numero como cadena
Tal vez pueda ayudarte con una parte del código... en unos 10 minutos a ver que hago
Hola, yo lo hariá algo así
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!
Es mas o menos como yo habia sugerido.
Saludos
No le hagas la terea :xD con lo que se dijo anteriormente es suficiente