Number Format Exception

1 resposta
juliocesarsrosa

Ola galerinha estou com um problema e preciso de uma ajuda tenho um valor do tipo BigDecimal no Seguinte formato em um textfield 123.123,32 e preciso
pegar esse valor e formatar para esse formato 123,123.32 isso vai acontecer Quando uma combo box for alterada de R$ para U$

Tentei de um geito que Tecnicamente deveria ter funcionado um jeito simples e claro vou colocar aki se algm soubver o pq nao funciona agradeço

txValorTitulo.setText(BigDecimalUtil.getBigDecimal(txValorTitulo.getText()).toString());

E esse é o metodo getBigDecimalFormat

 public static BigDecimal getBigDecimalFormat(Object object) {

         
		// declarando objeto que vai ser retornado
		BigDecimal value = null;

		// verificando se o argumento eh diferente de nulo
		if (object != null) { // se for diferente de nulo

			// verificando se o argumento eh do tipo long
			if (object instanceof BigDecimal) { // se sim

				// nesse caso so faz a conversao
				value = (BigDecimal) object;

			// verificando se o argumento eh do tipo Number
			} else if (object instanceof Number) { // se sim

				// criando o objeto long atraves do number
				value = new BigDecimal(((Number) object).doubleValue());

			// verificando se o argumento eh do tipo String
			} else if (object instanceof String) { // se for string

                                value = new BigDecimal(((String) object).replaceAll("\\.", "*").replace(',', '.').replaceAll("\\*",","));

			} else { // senao tipo invalido para efetuar convercao

				// lancao excecao
				throw new IllegalArgumentException(
						"Não é possivel converter o objeto do tipo ["
								+ object.getClass().getName()
								+ "] para o tipo Double.");
			}
		}

		return value;
	}

Bom Esse foi o primeiro jeito que tentei um simples Replace mas nao entendi pq nao funcionou …

E esse é o Segundo geito

teste = BigDecimalUtil.getBigDecimal(txValorTitulo.getText().toString());
                txValorTitulo.setDocument(new PlainDocument());//limpa o TextField para entrar o novo valor
                txValorTitulo.setText(nfUS.format(teste).substring(1));


Segue o metodo Get Big Decimal
public static BigDecimal getBigDecimal(Object object) {
		
		// declarando objeto que vai ser retornado
		BigDecimal value = null;
		
		// verificando se o argumento eh diferente de nulo
		if (object != null) { // se for diferente de nulo
			
			// verificando se o argumento eh do tipo long
			if (object instanceof BigDecimal) { // se sim
				
				// nesse caso so faz a conversao
				value = (BigDecimal) object;
			
			// verificando se o argumento eh do tipo Number
			} else if (object instanceof Number) { // se sim
				
				// criando o objeto long atraves do number
				value = new BigDecimal(((Number) object).doubleValue());
				
			// verificando se o argumento eh do tipo String
			} else if (object instanceof String) { // se for string
				
				// criando objeto long com base em uma String                                
				value = new BigDecimal(((String) object).replaceAll("\\.", "").replace(',', '.'));
				
			} else { // senao tipo invalido para efetuar convercao
				
				// lancao excecao
				throw new IllegalArgumentException(
						"Não é possivel converter o objeto do tipo ["
								+ object.getClass().getName()
								+ "] para o tipo Double.");
			}
		}
		
		return value;
	}

Ambos dao Number Format Excepition porem … o Segundo Exemplo Funciona perfeitamente faz a troca de pontos por virgulas e talz formata certinho soh
que mesmo estando tudo certo lança a exception …algm sugere um geito
mais facil de fazer??

abraços

1 Resposta

javer

Olhe aqui

Criado 15 de fevereiro de 2011
Ultima resposta 15 de fev. de 2011
Respostas 1
Participantes 2