Não realizar transacao se saldo &lt saque/transferencia

3 respostas
rodrigo_salla

Boa noite...

Por gentileza, se alguém puder me ajudar.

Tenho duas classes, Cliente e ValidarMetodos, esta última que valida os métodos saque e transfereDinheiro.
public class Cliente 
{
	private String nome;
	private double saldo;
	private double saque;
	
	public Cliente(String nome, double saldo)
	{
		this.setNome(nome);
		this.setSaldo(saldo);
	}
	
	public String getNome()
	{
		return this.nome;
	}
	
	public void setNome(String nome)
	{
		this.nome = nome;
	}
	public double getSaldo()
	{
		return this.saldo;
	}
	
	private void setSaldo(double saldo)
	{
		this.saldo = saldo;
	}
	
	public boolean saque(double valor)
	{
		this.saldo -= valor;
		return ValidarMetodos.validarSaque(saque, saldo);
	}
	
	public void deposita(double valor)
	{
		this.saldo += valor;
	}
	
	public void transfereDinheiro(Cliente destino, double valor)
	{
		this.saque(valor);
		destino.deposita(valor);
	}
}
public class ValidarMetodos 
{
	public static boolean validarSaque(double saque, double saldo)
	{
		if(saque < saldo)
		{
			System.out.println("Transacao autorizada e realizada!!!");
		}
		else
		{
			System.out.println("Transacao NAO autorizada, pois seu e saldo insuficiente!!!");
		}
		return false;
	}
}
Quando o saque/transferencia e menor que o saldo, sem problemas, as contas são atualizadas normalmente, e a seguinte mensagem é exibida no console:
public class Application 
{
	public static void main(String[] args)
	{
		Cliente neiva = new Cliente("Neiva", 1000);
		Cliente rodrigo = new Cliente("Rodrigo", 1000);
		neiva.transfereDinheiro(rodrigo, 450);
		System.out.println("NEIVA " + neiva.getSaldo());
		System.out.println("RODRIGO " + rodrigo.getSaldo());
	}
}
Transacao autorizada e realizada!!! NEIVA 550.0 RODRIGO 1450.0 Porém, quando a situação é inversa o saldo aparece negativo e ao meu entender a operação é realizada da mesma forma, como posso fazer com que sem saldo a operação não seja realizada?
public class Application 
{
	public static void main(String[] args)
	{
		Cliente neiva = new Cliente("Neiva", 1000);
		Cliente rodrigo = new Cliente("Rodrigo", 1000);
		neiva.transfereDinheiro(rodrigo, 2222450);
		System.out.println("NEIVA " + neiva.getSaldo());
		System.out.println("RODRIGO " + rodrigo.getSaldo());
	}
}
Transacao NAO autorizada, pois seu e saldo insuficiente!!! NEIVA -2221450.0 RODRIGO 2223450.0

Eu não queria que o saldo fosse negativo porque não deveria nem ser realizado o saque/transferencia por falta de fundos.

Muito obrigado!!!
Rodrigo

3 Respostas

cassio

olá!

Vc tem alguns erros de lógica no seu programa.

Altere dessa forma:

public boolean saque(double valor)
{
   if(ValidarMetodos.validarSaque(saque, saldo)){
      this.saldo -= valor;
      return true;
   } 
   else return false;
}
public class ValidarMetodos 
 {
 	public static boolean validarSaque(double saque, double saldo)
 	{
 		if(saque < saldo)
 		{
 			System.out.println("Transacao autorizada e realizada!!!");
                        return true;
 		}
 		else
 		{
 			System.out.println("Transacao NAO autorizada, pois seu e saldo insuficiente!!!");
                        return false;
 		} 		
 	}
 }

Compare os trechos de código originais que vc postou com os que eu alterei para vc entender as atlerações. Tente tbm entender porque foram alteradas…

qualquer dúvida posta ai!

Abraço!

rodrigo_salla

Muito obrigado pela atencao e desculpe-me pela dúvida nível zero, estou me esforçando para aprender java, não sou programador, sou assist Adm, apenas conheci java e apaixonei, mas está muito difícil sozinho, tenho mesmo problema com lógica.

Conhece alguém bom para dar aulas?

cassio

Complicado, moramos em regiões diferentes… hehehe
Mas assim, eu acho que isso leva um pouco de tempo mesmo… Quando eu comecei a programar apanhava feio de exercícios que são considerados básicos por qualquer programador, isso você acaba pegando com o tempo. Lógica acho que todo mundo tem um pouco, é questão de treino tbm…
Com paciência, força de vontade, um bom livro e um fórum como o GUJ, entre outras fontes de pesquisa, você consegue :slight_smile:

Abraço!

Criado 24 de outubro de 2006
Ultima resposta 25 de out. de 2006
Respostas 3
Participantes 2