Resetar valor de variavel

Boa tarde,

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…

se alguem conseguir me ajudar…

agradeço!!! :lol: :lol: :lol:

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 :smiley:

Tenta tratar esse erro na classe que esta chamando esse seu objeto, vou tentar mostrar:

[code] public double recebetel() throws NumberFormatException{

         String te2 = JOptionPane.showInputDialog(null, "texto", "Dados", 1);  
         this.te = Double.parseDouble(te2);  

     return this.te;  

 }  

}[/code]

Dae la na classe que ta chamando esse objeto vc usa o try catch
Abs

onde está a parte que você faz ele reiniciar??

Use do while, ou seja o usuário digita primeiro, se der exceção ele digita de novo, senão continua…

usando a ideia do MaxVenom ficaria melhor pra vc…

[code]import javax.swing.*;
public class RecebeTelefone {

double telefone;

public double recebeTel() throws NumberFormatException{  
	String telefoneInput = JOptionPane.showInputDialog(null, "Digite um número: ", "Dados", 1);  
    telefone = Double.parseDouble(telefoneInput);  
	
    return telefone;  
}  

public static void main(String[] args){

	RecebeTelefone rt = new RecebeTelefone();
	
	while(true){
		try{
			JOptionPane.showMessageDialog(null, "Número escolhido: " + rt.recebeTel()); 
			break;
		}catch (NumberFormatException e) {  
			JOptionPane.showMessageDialog(null, "texto", "Erro", 1); 
		}
	}
}

}
[/code]

e cara só uma coisa, acho melhor você usar aquelas regras JavaBean e usar nomes de variáveis melhores pra ficar mais fácil de ler o código…

Abraço

Tenta fazer assim se funcionar avise:

            static double te;
	  	
	  	public static void main(String[]args){        
			JOptionPane.showMessageDialog(null, recebetel());
	  	}
		 public static double recebetel() {  
			   
	         try {  
	             te = Double.parseDouble(JOptionPane.showInputDialog(null, "texto", "Dados", 1));  
	          
	         }   
	         catch (NumberFormatException e) {  
                     JOptionPane.showMessageDialog(null, "Apenas numeros sao validos");
	             recebetel();            
	         }  
	   
	  
	         return te;
	   
	     }  

galera vlw mesmo pela ajuda, quando eu conseguir eu tento esses comandos…

galera deu certo…
eu fiz como o MaxVenom indicou…
tratei o erro na chamada da classe…

VLW MESMO PELA AJUDA…

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.