Valor negativo

7 respostas
G

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.

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

VALEUUU

7 Respostas

erickles

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 ?

venomtotal

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

erickles

Achei redundante essa parte:

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

Nao acham?

G

BLZ
VALEU PELA DICA!!!

B

Retirada poderia ser implementado como

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

erickles
<blockquote>Retirada poderia ser implementado como

view plaincopy to clipboardprint?

public void Retirada (double valor){

Deposito(-valor);

}

public void Retirada (double valor){

Deposito(-valor);

} </blockquote>

Pod cre…

M

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

Criado 19 de junho de 2008
Ultima resposta 20 de jun. de 2008
Respostas 7
Participantes 5