galera como eu faço para “resetar” o valor de uma variavel…
é pq tipo assim, eu crio uma variavel e pço pro usuario colocar um valor nela. ai se ele colocar algo indevido (letras) eu faço com que o programa inicie dnovo e peça para ele colocar esse valor novamente… só que no final, mesmo o kra colocando um número o valor da variavel fica zerada…
abaixo o código:
import javax.swing.*;
public class recebetelefone {
double te; //esta é a variável que qro "resetar" quando eu reiniciar o programa......
public double recebetel() {
try {
String te2 = JOptionPane.showInputDialog(null, "texto", "Dados", 1);
this.te = Double.parseDouble(te2);
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "texto", "Erro", 1);
recebetelefone r = new recebetelefone();
r.recebetel();
}
return this.te;
}
}
a variavel está fora da classe que eu reinicio… entao eu já pesquisei como reiniciar uma variavel… + nun encontrei nada…
Cara… não entendi direito o que vc quer… mas pelo que eu entendi é meio que na logica a falha.
vc ta tentando tratar um erro dentro do objeto com recursão ainda por cima… Acontece assim: Quando vc ta retornando o “te” vc esta retornando o primeiro que foi chamado, entendeu? Não??? Exatamente por isso que eh um erro de logica… rsrsrs
Tenta tratar esse erro na classe que esta chamando esse seu objeto, vou tentar mostrar:
[code] public double recebetel() throws NumberFormatException{
A variavel continua zerada por que voce simplesmente cria um novo objeto e manda ele chamar o método recebetel novamente. O retorno dessa variavel é perdida e voce continua com o que voce tinha.
Voce poderia ter feito o seguinte.
import javax.swing.*;
public class recebetelefone {
double te; //esta é a variável que qro "resetar" quando eu reiniciar o programa......
public double recebetel() {
try {
String te2 = JOptionPane.showInputDialog(null, "texto", "Dados", 1);
this.te = Double.parseDouble(te2);
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "texto", "Erro", 1);
return recebetel();
}
return this.te;
}
}
Assim se caisse na exceção o programa chamaria o proprio metodo novamente fazendo com que o usuario digite o valor denovo. Isso é recursivo e só vai sair do método quando ele digitar um valor correto.