Boa tarde,
Estudando programação java, estou com o problema que classe não está retornando o valores corretos e gostaria de saber se o método transfere está correto?
[code]/*
-
classe Conta
-
Esta classe é responsável por sacar, depositar e tranferir valor
*/
class Conta
{
private double saldo; // atributo saldo
private double limite = 50; // atributo limite, valor inicial 50
private double saldoAnterior;public Conta(double saldo)
{
this.saldo = saldo;
}/*
- método saca()
-
@param quantidade = quantidade a cacar
*/
public synchronized void saca(double quantidade)
{
if((this.saldo + this.limite) > quantidade)
{
try
{
Thread.sleep((int)(Math.random()*300));
}catch (InterruptedException e)
{
e.printStackTrace();
}
saldoAnterior = this.saldo;
this.saldo -= quantidade;
System.out.println(Thread.currentThread().getName()+"\tSaldo Anterior: R$"+ saldoAnterior +
"\tSacou: "+ quantidade +
"\tSaldo: "+ this.saldo);
}
}
/*
-
método deposita()
-
@param quantidade = quantidade a depositar
*/
public synchronized void deposita(double quantidade)
{try
{
Thread.sleep((int)(Math.random()*300));
}catch (InterruptedException e)
{
e.printStackTrace();
}
saldoAnterior = this.saldo;
this.saldo += quantidade;
System.out.println(Thread.currentThread().getName()+"\tSaldo Anterior:"+ saldoAnterior +
"\tDepositou: "+ quantidade +
"\tSaldo: "+ this.saldo);
}
/*
- método transfere()
- @param destino = conta que receberá a quantia
-
@param quantidade = quantidade da transferencia
*/
public synchronized void transferePara(Conta destino, double quantidade)
{
try
{
Thread.sleep((int)(Math.random()*300));
}catch (InterruptedException e)
{
e.printStackTrace();
}
saldoAnterior = this.saldo;
this.saldo -= quantidade;
destino.saldo += quantidade;
System.out.println(Thread.currentThread().getName()+"\tSaldo Anterior:"+ saldoAnterior +
"\tTransferiu: "+ quantidade +
"\tSaldo: "+ this.saldo);
}
}
/*
-
classe Cliente
*/
class Cliente extends Thread
{
private Conta conta;/*
- construtor da classe Cliente
*/
public Cliente(String name, Conta conta)
{
super(name);
this.conta = conta;
}
public void run()
{
for (int operacao = 10; operacao >= 0; operacao–)
{
if (operacao <= 3)
conta.saca(2);
else if(operacao > 3 && operacao <=6)
conta.deposita(10);
else if(operacao > 6 && operacao <= 10)
conta.transferePara(conta, 50);
}
}
} - construtor da classe Cliente
public class Programa {
public static void main(String[] args)
{
Conta conta = new Conta(100);
Conta conta2 = new Conta(100);
Cliente joao = new Cliente("Joao", conta);
Cliente maria = new Cliente("Maria", conta2);
joao.start();
maria.start();
}
}[/code]
Agradeço desde já,
Júnio César Silva