Bom,
aqui vai uma classe q faz isso. Para testar, execute:
Extenso <numero>
Luiz Ricardo
> "Paulo Roberto B. Medeiros" wrote:
>
> Pessoal,
>
> Estou precisando de uma fun��o para gerar valores por extenso em Java.
> Algu�m tem?
>
> Agrade�o antecipadamente.
>
> Paulo.
>
/**
* @author Luiz Ricardo Belem Santos - 2001
*/
public class Extenso {
private static final String[] unidade = { "um", "dois", "tr�s", "quatro",
"cinco", "seis", "sete", "oito", "novo", "dez", "onze", "doze", "treze",
"quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove" };
private static final String[] dezena = { "vinte", "trinta", "quarenta",
"cinquenta", "sessenta", "setenta", "oitenta", "noventa" };
private static final String[] centena = {"cento", "duzentos", "trezentos",
"quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos",
"novecentos" };
private static final String[] casa = {"mil", "milh�o(�es)", "bilh�o(�es)",
"trilh�o(�es)", "quatrilh�o(�es)", "quintilh�o(�es)", "sextilh�o(�es)",
"septilh�o(�es)" };
private String number;
public Extenso(String number) {
this.number = number;
}
public String escrevaExtenso() {
int resto = number.length() % 3;
int quociente = number.length() / 3;
int numIteracoes = (resto == 0) ? quociente : quociente + 1;
StringBuffer result = new StringBuffer();
for (int i = 0; i < numIteracoes; i++) {
String str = "";
int tam = (resto != 0 && i == 0) ? resto : 3;
str = number.substring(0, tam);
number = number.substring(tam, number.length());
if (str.length() == 1) {
result.append(escreverUnidade(str));
} else if (str.length() == 2) {
result.append(escreverDezena(str));
} else if (str.length() == 3) {
result.append(escreverCentena(str));
}
if (i < numIteracoes - 1) {
result.append(" ").append(casa[numIteracoes - 2 - i]);
if (!number.startsWith("0")) {
result.append(" e ");
}
}
}
return result.toString();
}
private String escreverUnidade(String str) {
return unidade[Integer.parseInt(str) - 1];
}
private String escreverDezena(String str) {
StringBuffer sb = new StringBuffer();
if (str.startsWith("1")) {
sb.append(escreverUnidade(str));
} else {
if (!str.startsWith("0")) {
int ind = Integer.parseInt(str.substring(0, 1));
sb.append(dezena[ind - 2]);
}
if (str.charAt(1) != '0') {
int ind = Integer.parseInt(str.substring(1, 2));
if (!str.startsWith("0")) {
sb.append(" e ");
}
sb.append(unidade[ind - 1]);
}
}
return sb.toString();
}
private String escreverCentena(String str) {
StringBuffer sb = new StringBuffer();
if (str.equalsIgnoreCase("100")) {
sb.append("cem");
} else {
if (!str.startsWith("0")) {
int ind = Integer.parseInt(str.substring(0,1));
sb.append(centena[ind - 1]);
}
if (!str.endsWith("00")) {
sb.append(" e ").append(escreverDezena(str.substring(1,3)));
}
}
return sb.toString();
}
public static void main(String[] args) {
Extenso e = new Extenso(args[0]);
System.out.println(e.escrevaExtenso());
}
}
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------