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).intValue()).toString()); li_tam = as_valor.length(); if (li_tam%3 == 0) li_numgrp_3 = li_tam/3; //int else li_numgrp_3 = (li_tam/3) + 1;//int // Efetua a varredura do valor a cada 3 dígitos, efetuando a // descrição em extenso de cada grupo separadamente. ls_valor = new String(as_valor); li_id_mil = 0; // Identificador de faixas acima da milhar... for (li_i = li_numgrp_3 ;li_i>=1; li_i--) { li_id_mil ++; // Passa para próxima casa milhar... ls_grp_extenso = ""; // Inicializa variável descritiva. // Separa os três últimos dígitos do valor na variável de // processamento "StrGrp", separando os dígitos restantes // na mesma variável "ls_valor". li_posgrp_3 = ls_valor.length() - 2; if (li_posgrp_3 > 1) { li_valgrp = Integer.valueOf(ls_valor.substring(li_posgrp_3-1,ls_valor.length())).intValue(); ls_valor = ls_valor.substring(0,li_posgrp_3-1); } else li_valgrp = Integer.valueOf(ls_valor).intValue(); // Se o valor for zero, passa para o próximo grupo... if (li_valgrp == 0) continue; // Verificação do dígito da centena... li_digito = li_valgrp/100; //int li_valgrp = li_valgrp - li_digito*100; // Atualiza a variável // com o valor restante. if (li_digito > 0) { // Se for uma centena, verifica se há mais dígitos // para identificar se é CEM ou CENTO. if ((li_digito == 1) && (li_valgrp > 0)) li_digito+= 10; // Identifica no vetor o texto descritivo para o dígito. ls_grp_extenso = ls_cen_val[li_digito]; // Se houver mais dígitos, de antemão acrescenta a // conjunção "e". if (li_valgrp > 0) ls_grp_extenso += " E"; } // Verificação do dígito da dezena... // Se estiver no intervalo 10-19, termina o processamento aqui... if (li_valgrp >= 10 && li_valgrp <= 19) ls_grp_extenso += ls_dez_val[li_valgrp] ; else { li_digito = li_valgrp/10 ;//int li_valgrp = li_valgrp - li_digito*10; // Atualiza a variável // com o valor restante. if (li_digito > 0) { // Identifica no vetor o texto descritivo para o dígito. ls_grp_extenso += ls_dez_val[li_digito]; // Se houver mais dígitos, de antemão acrescenta a // conjunção "e". if (li_valgrp > 0) ls_grp_extenso += " E"; } // Verificação do dígito da unidade... if (li_valgrp > 0) ls_grp_extenso += ls_und_val[li_valgrp]; } // Terminada a descrição do número referente ao grupo atual // de três dígitos, deve-se verificar se encontra em alguma // faixa acima da milhar, para completar a descrição do valor. if (li_valgrp == 1) // Se valor unitário, a descrição será no singular... ls_grp_extenso += ls_mil_val[li_id_mil]; else // Se for valor maior, a descrição será no plural... ls_grp_extenso += ls_mil_val[li_id_mil+10]; // Atualiza o contador de loops efetuados com valores descritos. li_contgrp ++; // Atualiza o Texto final descritivo do valor total... if (ls_txt_extenso.equals("")) ls_txt_extenso = ls_grp_extenso; else { // Se for o penúltimo grupo, deve-se usar a conjunção "e", // ao invés da vígula... if (li_contgrp == 2) ls_txt_extenso = ls_grp_extenso + " E" + ls_txt_extenso; else ls_txt_extenso = ls_grp_extenso + "," + ls_txt_extenso; } } } catch(Exception e) { System.out.println("Excecao na f_extenso:"+e.toString()); } return ls_txt_extenso.trim(); }
------------------------------ 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] -------------------------------------------------------------------------