Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Exibe número diferente

Corrente[] conta = new Corrente[5];

Corrente cc1 = new Corrente(6646, 000123);

conta[0] = cc1;

for(int i = 0; i < 5; i++) {
            System.out.println(conta[i].getNumero());

No código acima,é exibido o valor 83. Gostaria de saber o por que? E como resolver?

3 respostas

Calos,

Por favor poderia informar todo o código da classe Corrente e da classe Conta, somente com esse trecho fica difícil identificar algum problema.

package br.com.bytebank.banco.modelo;

public class Conta {

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

    public Conta(int agencia, int numero) {
        Conta.total++;
        //System.out.println("O total de contas é " + Conta.total);
        this.agencia = agencia;
        this.numero = numero;
        //this.saldo = 100;
        //System.out.println("Estou criando uma conta" + this.numero);
    }

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

    public void saca(double valor) throws SaldoInsuficienteException {
        if (this.saldo < valor) {
        throw new SaldoInsuficienteException("Saldo: " +this.saldo +" Valor: " +valor);    
    }

        this.saldo -= valor;
    }

    public void transfere(double valor, Conta destino) throws SaldoInsuficienteException {
        this.saca(valor);
        destino.deposita(valor);

        }


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

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

    public void setNumero(int numero) {
        if (numero <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.numero = numero;
    }

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

    public void setAgencia(int agencia) {
        if (agencia <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.agencia = agencia;
    }

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

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

    public static int getTotal() {
        return Conta.total;
    }

    @Override
    public String toString() {
        return "Número: " + this.numero + ", Agência: " +this.agencia;
    }

    @Override
    public boolean equals(Object ref) {
        Conta outra = (Conta)ref;

        if(this.agencia != outra.agencia) {
            return false;
        }
        if(this.numero != outra.numero) {
            return false;
        }
            return true;
    }


}

package br.com.bytebank.banco.modelo;

public class ContaCorrente extends Conta implements Tributavel {

public ContaCorrente(int agencia, int numero) {
    super(agencia, numero);
}

@Override
public void saca(double valor) throws SaldoInsuficienteException {
    double valorASacar = valor + 0.2;
    super.saca(valorASacar);
}

@Override
public void deposita(double valor) {
    super.saldo += valor;

}

@Override
public double getValorImposto() {
    return super.saldo * 0.01;
}

@Override
public String toString() {
    return "Conta Corrente: " + super.toString();
}

}



package br.com.bytebank.banco.teste.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Vector;

import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;

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

        ArrayList<Conta> lista = new ArrayList<Conta>();

        Conta cc = new ContaCorrente(11, 0022);
        lista.add(cc);

        Conta cc2 = new ContaCorrente(11, 33);
        lista.add(cc2);

        System.out.println("Tamanho: " + lista.size());

        Conta ref = lista.get(0);
        System.out.println(ref.getNumero());

        lista.remove(0);
        System.out.println("Tamanho: " + lista.size());

        Conta cc3 = new ContaCorrente(22, 11);
        lista.add(cc3);

        Conta cc4 = new ContaCorrente(22, 22);
        lista.add(cc4);

        System.out.println("Tamanho: " + lista.size());

        for(int i = 0; i<lista.size(); i++) {
            Object oRef = lista.get(i);
            System.out.println(oRef);
        }

        System.out.println("---------------------");

        for(Conta oRef : lista) {
            System.out.println(oRef);
        }
    }

}

Cleiton, seguem os códigos das classes.

solução!

Opa, Carlos! Como vai?

O problema é que o Java vai entender o valor 000123 como sendo um valor da base octal! Isso se deve aos zeros que vc adicionou no início do número (inclusive, apenas utilizando um zero no início já bastaria pra causar essa pequena confusão)! E 123 na base octal é exatamente 83 na nossa base decimal! Por isso 83 é a resposta impressa no final das contas!

Para saber mais: https://www.devmedia.com.br/entendendo-as-literais-em-java/26526

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!