[RESOLVIDO]Transformar String em double

Olá,

Estou com uma pequena dificuldade em transformar uma string em um double.
Ex:

String r1="24,44";
double s1 = 0.00;

r1.replaceAll(",", ".");
s1 = Double.parseDouble(r1);

ao tentar fazer isso ele apresenta o erro:

For input string: "51,75" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241) at java.lang.Double.parseDouble(Double.java:540)

replaceAll da String não altera o próprio objeto, só retorna, então faça isso: r1 = r1.replaceAll(",", “.”); Ou use StringBuilder (mais indicado para processar strings).

Era isso mesmo, muito obrigado, :smiley:

Você pode solucionar esse problema ou com StringBuilder ou recebendo o valor da String, lembre-se Strings são imutáveis!

r1 = r1.replaceAll(",", ".");

Com StringBuilder, o objeto seria modificado e você poderia utilizar a variável r1!

Fala rafa,
O código já está nos finalmente e já tenho outra variável criada, tudo está funcionando agora. Agradeço pela sugestão, todo conhecimento novo é bem vindo =D

[quote=prowler]Fala rafa,
O código já está nos finalmente e já tenho outra variável criada, tudo está funcionando agora. Agradeço pela sugestão, todo conhecimento novo é bem vindo =D[/quote]

Com toda a certeza prowler!

É importante deixar claro que todos os valores passados por parâmetro em Java são por valor, ou seja é passado apenas uma cópia da variável, mas no caso de ser um objeto não imutável, o valor do objeto muda. Os objetos são controlados através de referências, como se fossem controles, esses controles acessam o objeto na memória!

Se o objeto na memória for mudado logo a variável que está apontando pra ele na memória ficará com o mesmo valor que foi mudado no objeto.

Com String isso não acontece porque a cada momento que o valor dela é trocado cria-se um novo objeto na memória, e isso vale pra todas as classes Wrapper.