Re: [java-list] Valores por extenso
Oi, tenho esta anexada aí.. Original Message Follows From: "Daniel Brazil" <[EMAIL PROTECTED]> Reply-To: [EMAIL PROTECTED] To: <[EMAIL PROTECTED]> Subject: Re: [java-list] Valores por extenso Date: Mon, 3 Dec 2001 22:28:05 -0300 Oi Paulo, Tem alguma coisa que pode ajudar no endereco http://sites.netscape.net/brazildaniel/jmj.htm, em informatica/java, espero ajudar! Daniel Brazil - Original Message - From: Paulo Roberto B. Medeiros To: [EMAIL PROTECTED] Sent: Monday, December 03, 2001 3:54 PM Subject: [java-list] Valores por extenso Pessoal, Estou precisando de uma função para gerar valores por extenso em Java. Alguém tem? Agradeço antecipadamente. Paulo. _ Chegou o novo MSN Explorer. Instale já. É gratuito! http://explorer.msn.com.br public String f_extenso(String as_valor,boolean feminino) { // Descrição : Função para descrever determinado valor numérico em // texto extenso. // // Sintax: f_Extenso (as_valor) // // Argumentos: as_valor -> String contendo o número que se deseja // descrever em texto extenso. // // Retorno...: Texto por extenso do valor numérico. // // String ls_und_val[ ], ls_dez_val[ ], ls_cen_val[ ], ls_mil_val[ ], ls_valor="", ls_txt_extenso="", ls_grp_extenso="" ; int li_tam=0, li_numgrp_3=0, li_i=0, li_posgrp_3=0, li_valgrp=0,li_digito=0,li_id_mil=0, li_contgrp=0 ; // Preenchimento dos Vetores para pesquisa do texto descritivo para // cada fator numérico, diretamente sem teste ou condições... ls_und_val= new String[10]; ls_und_val[0] = " 0" ; ls_und_val[1] = " UM" ; ls_und_val[2] = " DOIS" ; ls_und_val[3] = " TRES" ; ls_und_val[4] = " QUATRO" ; ls_und_val[5] = " CINCO" ; ls_und_val[6] = " SEIS" ; ls_und_val[7] = " SETE" ; ls_und_val[8] = " OITO" ; ls_und_val[9] = " NOVE" ; ls_dez_val = new String[20]; ls_dez_val[0] =" 0" ; ls_dez_val[1] =" 0" ; ls_dez_val[10] =" DEZ" ; ls_dez_val[ 2] = " VINTE" ; ls_dez_val[ 3] = " TRINTA" ; ls_dez_val[ 4] = " QUARENTA" ; ls_dez_val[ 5] = " CINQUENTA" ; ls_dez_val[ 6] = " SESSENTA" ; ls_dez_val[ 7] =" SETENTA" ; ls_dez_val[ 8] =" OITENTA" ; ls_dez_val[ 9] =" NOVENTA" ; ls_dez_val[11] = " ONZE" ; ls_dez_val[12] = " DOZE" ; ls_dez_val[13] = " TREZE" ; ls_dez_val[14] = " QUATORZE" ; ls_dez_val[15] = " QUINZE" ; ls_dez_val[16] = " DEZESSEIS" ; ls_dez_val[17] = " DEZESSETE" ; ls_dez_val[18] =" DEZOITO" ; ls_dez_val[19] = " DEZENOVE" ; ls_cen_val = new String[12]; ls_cen_val[ 0] = " 0" ; ls_cen_val[ 1] = " CEM" ; ls_cen_val[ 2] = " DUZENTOS" ; ls_cen_val[ 3] =" TREZENTOS" ; ls_cen_val[ 4] = " QUATROCENTOS" ; ls_cen_val[ 5] = " QUINHENTOS" ; ls_cen_val[ 6] = " SEISCENTOS" ; ls_cen_val[ 7] = " SETECENTOS" ; ls_cen_val[ 8] = " OITOCENTOS" ; ls_cen_val[ 9] = " NOVECENTOS" ; ls_cen_val[11] =" CENTO" ; ls_mil_val=new String[16]; ls_mil_val[ 0] = "0" ; ls_mil_val[ 6] = "0" ; ls_mil_val[ 7] = "0" ; ls_mil_val[ 8] = "0" ; ls_mil_val[ 9] = "0" ; ls_mil_val[10] = "0" ; ls_mil_val[ 1] = "" ; ls_mil_val[ 2] = " MIL" ; ls_mil_val[ 3] =" MILHAO" ; ls_mil_val[ 4] =" BILHAO" ; ls_mil_val[ 5] = " TRILHAO" ; ls_mil_val[11] = "" ; ls_mil_val[12] = " MIL" ; ls_mil_val[13] = " MILHÕES" ; ls_mil_val[14] = " BILHÕES" ; ls_mil_val[15] = " TRILHÕES" ; if(feminino) { ls_und_val[1] =" UMA" ; ls_und_val[2] = " DUAS" ; } try { // Calcula o número de grupos de 3 dígitos que o valor possui, // pois a cada grupo, a descrição do valor segue o mesmo padrão. as_valor = (new Integer(Float.valueOf(as_valor).i
Re: [java-list] Valores por extenso
Bom, aqui vai uma classe q faz isso. Para testar, execute: Extenso 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] -
RES: [java-list] Valores por extenso
Esta rotina tem mais de um ano, mas acho que serve. Procure o main() tem um exemplo de utilização, para testar em prompt utilize : java com.mds.util.Extenso Sérgio E. Rodrigues -Mensagem original-De: Paulo Roberto B. Medeiros [mailto:[EMAIL PROTECTED]]Enviada em: segunda-feira, 3 de dezembro de 2001 16:54Para: [EMAIL PROTECTED]Assunto: [java-list] Valores por extenso Pessoal, Estou precisando de uma função para gerar valores por extenso em Java. Alguém tem? Agradeço antecipadamente. Paulo. Extenso.java Description: JavaScript source -- 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] -
Re: [java-list] Valores por extenso
Oi Paulo, Tem alguma coisa que pode ajudar no endereco http://sites.netscape.net/brazildaniel/jmj.htm, em informatica/java, espero ajudar! Daniel Brazil - Original Message - From: Paulo Roberto B. Medeiros To: [EMAIL PROTECTED] Sent: Monday, December 03, 2001 3:54 PM Subject: [java-list] Valores por extenso Pessoal, Estou precisando de uma função para gerar valores por extenso em Java. Alguém tem? Agradeço antecipadamente. Paulo.
[java-list] Valores por extenso
Pessoal, Estou precisando de uma função para gerar valores por extenso em Java. Alguém tem? Agradeço antecipadamente. Paulo.