Valor negativo

Pessoal estou com o seguinte problema tenho uma classe conta corrente um metodo retirada como faço pra esse metodo não tornar um valor negativo por exemplo faço um deposito de R$ 20,00 mais faço um saque de R$5 o resultado é -15 não pode aparecer um valor negativo.

[code] public class ContaCorrente {

// atributo saldo encapsulado
public static double saldo;

//metodo construtores
public ContaCorrente (){
	saldo =0;
}

public ContaCorrente (double dSaldo){
	saldo = dSaldo;
	
}

// metodo saldo atual
public void SaldoAtual(double dSaldoAtual){
saldo = dSaldoAtual;
}

public void Deposito (double valordeposito){
	saldo = saldo + valordeposito;
}
//retorna o saldo da conta
public double getsaldo(){
	return saldo;
}


public void Retirada (double status){  // METODO RETIRADA
	saldo = saldo - status;
}

}

//CLASSE TESTA**********************************************************************************
public class TestaContaCorrente {

public static void main(String[] args) {
	// TODO Stub de método gerado automaticamente
	ContaCorrente cc = new ContaCorrente(); 
	
	//JOptionPane.showMessageDialog(null,cc.getsaldo());
    double valordepo = 0 ;
  // menu 
String opcao ;
while ((opcao = JOptionPane.showInputDialog("MENU \n Opção 1 DEPOSITO \n Opção 2 SAQUE \n Opção 3 SALDO \n Digite 0 para SAIR" )) != null && opcao.length()!=0){

//DEPOSITO
if (opcao.equals( "1") ){
String s = "";

while ( (s = JOptionPane.showInputDialog("Digite o valor do Deposito .:")) != null && s.length()!=0
){
   //s = JOptionPane.showInputDialog("Digite o valor do Deposito .:");	
    valordepo += Double.parseDouble(s);
   // cc.Deposito(valordepo);
   JLabel pergunta = new JLabel("Deseja Realizar outro DEPOSITO?");
   int confirm =  JOptionPane.YES_OPTION;
    
while (confirm == JOptionPane.YES_OPTION){
	s = JOptionPane.showInputDialog("Digite o valor do Deposito .:");
	 confirm =  JOptionPane.showOptionDialog(null, pergunta, "Atenção", JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
	valordepo += Double.parseDouble(s);
	
}
cc.Deposito(valordepo);
	JOptionPane.showMessageDialog(null,cc.getsaldo(),"SALDO ATUAL", 1);
// opcao = JOptionPane.showInputDialog("MENU \n Opção 1 DEPOSITO \n Opção 2 SAQUE \n Opção 3 SALDO \n Opção S SAIR");
	//cc.Deposito(valordepo);
}
    
}//fim do if

 if (opcao.equals("2")){   // OPÇÃO PARA SAQUE
  String retirada;
 double saque = 0 ;
   while (( retirada = JOptionPane.showInputDialog("Digite o VALOR do SAQUE .:")) != null && retirada.length()!= 0){ 
	saque +=  cc.getsaldo() - Double.parseDouble(retirada) ;
	   JLabel pergunta2 = new JLabel("Deseja Realizar outro Saque?");
	   int confirmSaque = JOptionPane.YES_OPTION;  
		   
		   
	   while (confirmSaque == JOptionPane.YES_OPTION){
			retirada = JOptionPane.showInputDialog("Digite o valor do Saque .:");
			 confirmSaque =  JOptionPane.showOptionDialog(null, pergunta2, "Atenção", JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
			 saque +=  cc.getsaldo() - Double.parseDouble(retirada) ;
	   
	    }
	   cc.Retirada(saque);
	   JOptionPane.showMessageDialog(null,cc.getsaldo(),"SALDO ATUAL", 1);
   }//fim do while[/code]

VALEUUU

Simples…

nesse trecho

      saque +=  cc.getsaldo() - Double.parseDouble(retirada) ;   
             

a variavel “saque” esta com valor 15 certo? sohq dai vc chama o metodo retirada, q faz oq?

 public void Retirada (double status){  // METODO RETIRADA   
        saldo = saldo - status;   
    }   

vc joga o valor 15 no parametros status, que assume valor negativo, e qual o valor da variavel saldo desse metodo ? 0!, resumindo 0 -15 = -15, sacou ?

eu ia responder, mas ainda bem que no GUJ sempre tem alguem mais rápidoo… :lol:

Achei redundante essa parte:

saque +=  cc.getsaldo() - Double.parseDouble(retirada) ; 

Nao acham?

BLZ
VALEU PELA DICA!!!

Retirada poderia ser implementado como

public void Retirada (double valor){ Deposito(-valor); }

[quote]Retirada poderia ser implementado como
view plaincopy to clipboardprint?
public void Retirada (double valor){
Deposito(-valor);
}
public void Retirada (double valor){
Deposito(-valor);
} [/quote]

Pod cre…

O que entendi é que ele nao queria que o saldo da conta corrente fique negativo…

para evitar isso vc deve lancar um exceção quando o valor for ficar negativo…

public void saca(double valor ) throws Exception{
if(valor > this.saldo){
//Aqui o saldo ia ficar negativo
throw new Exception( “sem saldo” );
else{
this.saldo-=valor;
}

e quando for chamar ele usa um try/catch!!!

Abraço