Converter String em Double

Olá, estou bem ciente de estar utilizando uma tecnologia antiga, mas é para um trabalho escolar. Já contextualizado irei ao problema. Utilizando JFrame criei uma janela e nela existem 3 JTextField: entrada, sla e soma.
Eu pretendo fazer um sistema que pegue os valores dentro do JTextField, converta para String(já conclui) e depois para Double para fazer uma soma e depois ser exibido, entretanto está dando erro neste fragmento de código:

strEntrada.replaceAll(",", ".");
strSla.replaceAll(",","," );
Double n1 = Double.parseDouble(strEntrada);
Double n2 = Double.parseDouble(strSla);
Double Nsoma = n1 + n2;
System.out.printf(" %.2f",Nsoma);

Mais especificamente o compilador informa que o erro está em
Double n1 = Double.parseDouble(strEntrada);

Qual é o erro apresentado pelo compilador?

Strings são imutáveis, a chamada do replaceAll não altera sua variável o método retorna outra String.

Faça assim:

strEntrada = strEntrada.replaceAll(",", ".");
1 curtida

Oláo erro apresentado é este: at teste.actionPerformed(teste.java:79)
Eu basicamente fiz com que existam 2 JTextField onde eu insiro 2 valores e era pra somar eles, entretando a conversão de String para double não funciona da devida maneira. Fora outros erros que o compilador apresenta, que são inúmeros, alguns envolvendo até a biblioteca de ação.

Olá.
Agradeço pela ajuda, eu fiz a alteração que você me recomendou, mas a conversão de String para Double não funciona ainda, mas mesmo assim muito obrigado. :smiley:

Mostra a mensagem completa, só essa linha não ajuda a entender o que está acontecendo!


O JFrame inicia normalmente, entretanto quando eu aberto o botão que inicia um evento, aparece “só” esses errinhos rs.

O erro que importa é o que aparece na primeira linha da stack trace, basicamente você está fazendo a conversão de uma String vazia!

Isso faz com que seja lançada essa exception, pois uma String vazia não é passível de conversão para Double.

Mas… Não faz muito sentido, pois eu preencho o JTextField e existe uma variavel do tipo String que depois é convertida para Double. De verdade, muito obrigado, você foi de enorme ajuda, mas agradeço ainda mais se me ajudar a resolver isso.

A questão é que você imputar o valor no campo não necessariamente quer dizer que o valor digitado esteja chegando corretamente no ponto em que a conversão acontece!

Sem ver o código completo é difícil dizer onde de fato está o erro, mas o que basicamente você deveria fazer é algo semelhante à isso:

String primeiroValor = jTextFieldOne.getText().replaceAll(",", ".");
String segundoValor = jTextFieldTwo.getText().replaceAll(",", ".");

Double valorUm = Double.parseDouble(primeiroValor);
Double valorDois = Double.parseDouble(segundoValor);

Double soma = valorUm + valorDois;

Ok, me desculpa dificultar sua ajuda, eu irei testar adicionando o fragmento:

jTextFieldOne.getText().replaceAll(",", ".");

Novamente, agradeço pela ajuda.

String strEntrada = entrada.getText();
String strSla = sla.getText();

Este foi o fragmento que eu utilizei para armazenamento do texto do TextField para uma variavel String

Mostra a implementação completa do evento do click do botão!

public void actionPerformed(ActionEvent e) {
	
	//strEntrada = strEntrada.replaceAll(",", ".");
	//strSla = strSla.replaceAll(",","." );
	Double n1 = Double.parseDouble(strEntrada);
	Double n2 = Double.parseDouble(strSla);
	Double Nsoma = n1 + n2;
			
	System.out.printf(" %.2f",Nsoma);
	

}

}

Suponho que seja isso que o senhor esteja pedindo.
Eu coloquei pra enviar uma msg do sistema, pra eu saber se o calulo está sendo feito para depois eu alocar o valor em um JTextField

Os valores de srtEntrada e strSla você deveria estar preenchendo dentro deste método!

Provavelmente você está atribuindo valor para elas em outro ponto no momento errado para o que deseja fazer!

1 curtida

SENHOR, MUITO OBRIGADO. Deu certo, eu deveria ter pensado nisso, eu mudei de lugar algumas coisas do código, por exemplo a soma e começou a “andar”. Muito obrigado.

Aproveitando a sua boa vontade, poderia me ensinar a converter Double para String? Se não for lhe incomodar.

Double value = 10.99;
String valueText = String.valueOf(value);

Seria possível aplicar isso, quando o valor é colocado pelo usuário? Por exemplo, adaptar isso para o meu codigo?
perdão a demora, eu estava passando mal.

Não entendi o que você quis dizer, mas em linhas gerais é feito da forma que dei o exemplo, o uso depende do que quer fazer, é só adaptar para a sua necessidade!