NumberFormatException [RESOLVIDO]

8 respostas
ricardocomp

Olá Pessoal,
eu estou com uma dúvida aqui
não estou conseguindo resolver
e toda hora aparece a Exception
NumberFormatException:

Exception in thread "main" java.lang.NumberFormatException: For input string: "10,00"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
        at java.lang.Double.valueOf(Double.java:475)
        at java.lang.Double.<init>(Double.java:567)
        at model.analises.AcidezVolatil.calculaAcidezVolatil(AcidezVolatil.java:251)
        at model.analises.AcidezVolatil.main(AcidezVolatil.java:295)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)

Será que alguém poderia me dar uma ajuda?

[]'s.

8 Respostas

ricardocomp

Eu faço o seguinte calculo na linha 295:

acVol.calculaAcidezVolatil(gr);

e na linha 251 apenas calculo
um resultado simples que converte
o valor encontrado em String:

public void calculaAcidezVolatil(GrauAlcoolico gr){
        this.av = ((EQ*this.n*(0.1*this.fc))/(10.0*this.v));
        resultado = new Double(((this.av*100*1000)/(new Double(gr.getResultado())))).toString();        
    }

Será que alguém poderia me dar uma ajuda?

[]'s.

ctosin

O problema é que 10,00 não é um número válido no Java. Se você quer um número decimal convertido para double (ou float), use “10.00”.

Abraço

ricardocomp

Jóia ctosin?
Obrigado pela ajuda,
Mas o problema é que
eu não sei aonde está
ocorrendo essa conversão
do ponto para vírgula.
Se vc ou alguém puder me dar
uma ajuda?

[]'s.

Guilherme_Gomes

Use a classe NumberFormat. Se você usar o pt_BR como Locale, ele vai usar virgula como separador da parte fracionaria… Você pode achar varios tutoriais por aí pra isso!

ricardocomp

Olá pessoal,
descobri daonde está vindo essa vírgula
vem de algo parecido como esse do meu teste:

public static void main(String[] args) {
        
        DecimalFormat df = new DecimalFormat("0.00");

        double valor = 1.23569;
        String valorString = df.format(valor);
        System.out.println("Valor String = " + valorString);

    }

Alguém sabe me dizer porque eu não consigo imprimir
essa String sem lançar a exception:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1,24"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
        at java.lang.Double.valueOf(Double.java:475)
        at java.lang.Double.<init>(Double.java:567)
        at meustestes.Main.main(Main.java:27)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

Será que alguém poderia me dar uma ajuda?

[]'s.

ctosin

Como você não especificou um Locale, o Java está usando o padrão (que pra você é o pt_BR). Por isso que a formatação separa as casas decimais com “,” e não com “.”. Usar o pattern “0.00” não significa que o “.” vai ser usado: isso depende do Locale.

Existem diversas formas de resolver isso. Uma delas é esta:

public class Test {

	public static void main(String[] args) {

		DecimalFormatSymbols dfs = new DecimalFormatSymbols();
		dfs.setDecimalSeparator('.');
		DecimalFormat df = new DecimalFormat("0.00", dfs);
		
		double valor = 1.23569;
		String valorString = df.format(valor);
		System.out.println("Valor String = " + valorString);  
	}
}

Espero que tenha ajudado.
Abraço

JonathanSSantos

em algum lugar do seu codigo voce esta transformando o valor e colocando uma virgula!!

Faça um debbug e descubra exatamente onde ocorre o erro… la que esta acontecendo sua conversao incorreta!

VLW :smiley:

ricardocomp

Obrigado pessoal todo mundo pela ajuda,
e ctosin deu certo aqui com a sua dica. :smiley:

Abraço.

Criado 18 de dezembro de 2009
Ultima resposta 19 de dez. de 2009
Respostas 8
Participantes 4