Boa tarde a todos,
Estou recebendo o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
Sempre que clico nos botoes de operacoes na calculadora, abaixo o codigo de um dos botoes:
btnAdicao.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
textVisor.setText(null);
valorAnterior = Double.parseDouble(textVisor.getText());
operacaoAritmetica = 1;
}
});
Por favor, uma dica de como resolver isso, por outro lado tambem vou continuar tentando e se conseguir posto aqui a solucao, abracos.
veja o q vc fez… colocou NULL no setText e depois tentou converter ele pra numérico…
dae da erro mesmo…
coloca um setText("") e verifique antes de tentar converter pra números se realmente tem um número ali ( ou use um try catch )
ou nem tente converter pra número… pq vc SABE o que tem no getText pq vc acabou de setar na linha de cima
Ola RedDragon,
Cara, quando voce fala verificar se tem um numero voce quer dizer se eu digitei algum numero antes de tentar a soma por exemplo?
Fiz conforme voce orientou mas continua dando o mesmo erro, ah, e obrigado pela ajuda.
repare nessa linha
valorAnterior = Double.parseDouble(textVisor.getText());
se o textVisor.getText() vier um número que não pode ser convertido (por exemplo uma letra), lança uma exception
no seu código, vc digita
textVisor.setText(null);
em seguida digita:
valorAnterior = Double.parseDouble(textVisor.getText());
Vc acha que um null pode ser convertido em número? Entende o que digo?
Do jeito que está fazendo, sugiro ir guardando os valores digitados numa variável e usaria os botões apenas pra capturar os números, entende?
// numa variável global
double valor1 = -9999991;
double valor2 = -9999991;
String operacao = "";
btnNumero5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if ( operacao.equals("")) {
valor1 = 5;
exibeNoTextField(); // aqui vc seta no textfield
}else{
valor2 = 5;
exibeNoTextField(); // aqui vc seta no textfield
}
}
})
btnAdicao.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
operacao = "+";
exibeNoTextField(); // aqui vc seta no textfield
}
});
btnResultado.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// se operação não for vazia
if ( !operacao.equals("") && valor1 != -9999991 && valor2 != -9999991 ) {
// aqui vc tem os 2 valores e a operação... só fazer
}
exibeNoTextField(); // aqui vc seta no textfield o resultado
// zera os valores.. no caso assumi que o valor -9999991 é vazio mas existe melhores formas de se fazer isso
valor1 = -9999991;
valor2 = -9999991;
operacao = "";
}
});
claro que fiz as pressas aqui no guj mesmo então nem pensei muito… da pra melhorar um bocado isso q fiz
RedDragon,
Boa tarde cara, olha, valeu pela resposta, meu codigo ta grande e extenso demais pra eu postar aqui, mas eu entendi a sua explicacao e assim que eu resolver o problema eu posto aqui no forum, de qualquer modo voce me mostrou o caminho, agora so corrigir. Abraco.
Boa tarde,
RedDragon, como so voce respondeu este topico e se interessou em me ajudar eu quero informar que sua ajuda foi valiosa, consegui resolver os problemas de calculo e a calculadora ja esta funcionando, o objetivo era apenas fazer com que as operacoes funcionassem, em um primeiro momento sem validacao do tipo verificar se o usuario esta tentando dividir por zero, obrigado mesmo pelas dicas, se voce quiser dar uma olhada no meu codigo para fazer criticas e dar sugestoes…Grance abraco.