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.
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!