1
resposta

Saída errada na classe TesteContas

Eu escrevi a classe Conta desta forma:


public class Conta {

    private double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total = 0;


    // Criando um construtor
    public Conta(int agencia, int numero) {
        Conta.total++;
        System.out.println("O total de contas é: " + Conta.total + "\n##########");
        this.agencia = agencia;
        this.numero = numero;
        this.saldo = 0.0;
        System.out.println("ID " + Conta.total + "\nNúmero: " + this.numero + "\nAgência: " + this.agencia + "\n##########");
    }

    public void deposita(double valor) {
        this.saldo += valor;
    }

    public boolean saca(double valor) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        }
        else {
            this.saldo -= valor;
            System.out.println("Está no cheque especial.");
            System.out.println("R$ " + this.saldo);
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if(this.saca(valor)) {
            destino.deposita(valor);
            System.out.println("Saldo total R$ " + this.saldo);
            return true;
        }
        else {
            System.out.println("Valor indisponível. - R$ " + this.saldo);
            return false;
        }
    }

    // Getters
    public double getSaldo() {
        return this.saldo;
    }

    public int getAgencia() {
        return this.agencia;
    }

    public int getNumero() {
        return this.numero;
    }

    public Cliente getTitular() {
        return this.titular;
    }


    // Setters
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    public void setAgencia(int agencia) {
        if(this.agencia<=0) {
            System.out.println("Não pode agencia menor ou igual a zero.");
        } else {
            this.agencia = agencia;
        }
    }

    public void setNumero(int numero) {
        if(this.numero<=0) {
            System.out.println("Não pode número menor ou igual a zero.");
        } else {
            this.numero = numero;
        }
    }

    public void setTitular(Cliente titular) {
        this.titular = titular;
    }

}

A classe ContaCorrente:

// new ContaCorrente()
public class ContaCorrente extends Conta {

    // O construtor da classe mãe só pertence a ela própria. Assim, precisamos construir o nosso próprio construtor.
    public ContaCorrente(int agencia, int numero) {
        super(agencia, numero);
    }
}

A ContaPoupanca seguiu o mesmo padrão da ContaCorrente e para ficar mais fácil não vou copiar aqui.

O que acontece é que quando eu vou testar na classe TesteContas, ele tá saindo um valor nada a ver.

public class TesteContas {
    public static void main(String[] args) {

        //Conta nubank = new Conta(001, 101);
        //Conta inter = new Conta(001, 010);

        ContaCorrente cc = new ContaCorrente(001, 0664);
        cc.deposita(100.00);

        ContaPoupanca cp = new ContaPoupanca(001, 0664);
        cp.deposita(200.00);


        cc.saca(50.0);
        cp.saca(20.00);
    }

}

O resultado está nesse link https://ibb.co/QdCdWPT (hospedagem de imagens grátis, não é vírus hauhauh).

Desde já, agradeço a atenção :)

1 resposta

Oi, Beatriz. Tudo bem?

Os dois parâmetros do seu construtor são do tipo int, então quando você passa valores inteiros, mas que começam com 0, isso faz com que os números sejam interpretados de uma maneira um pouco diferente do esperado.

Exemplo:

10 = 10 010 = 8

65 = 65 065 = 53

664 = 664 0664 = 436

Para manter a formatação que você deseja, onde é colocado zeros a esquerda, eu mudaria os parâmetros do construtor de int para String. Dessa forma, você poderia passar valores no formato que você deseja, sem alterar a saída como vem ocorrendo.

Obs: Existem soluções mais sofisticadas do que a que eu te falei agora para atingir a formatação desejada, mas infelizmente eu não tenho tanto conhecimento em Java para poder te explicar.

Espero ter ajudado!