Problemas com meu construtor? Envolvendo Array

4 respostas Resolvido
java
Diego.Souza

Fala galera, tudo certo?

Estou tentando usar o meu construtor da minha classe Conta para adicionar assim que eu criar uma nova conta, passar como argumentos a minha agência e número da conta.

O problema é que o construtor do meu funcionário funciona perfeitamente, adicionando os valores na Array. Porém a conta quando eu dou um “new Conta()” passando os valores, parece que não recebe.

Minha classe main:

class TestaConta {

    public static void main (String[] args) {

        Conta conta = new Conta();
        conta.setClientes(new Cliente[10]);

        Cliente c1 = new Cliente("Viviane Correa", "Rua dos Gafanhotos, 25", "([telefone removido]", "[CPF removido]", "265.245.852-3");
        c1.conta = new Conta(3086, "64654878-5");

        conta.adicionaCliente(c1);
        conta.mostraClientes();

    }

}

Meus construtores na classe Conta:

public Conta (int agencia, String contaNum) {
        this.agencia = agencia;
        this.numeroConta = contaNum;
    }
public Conta () {

    }

Meu método que fica na classe Conta que adiciona o novo cliente e a conta numa posição de Array:

void adicionaCliente (Cliente c) {
        for (int x = 0; x < this.clientes.length; x++) {
            if (null == this.clientes[x]) {
                this.clientes[x] = c;

                if (null != this.clientes[x]) break;
            }
        }
    }

Resultado da compilação:

C:\Users\Diego\workspace\Alura\Construtores>java TestaConta
Agencia: 0
Conta: null
Titular: Viviane Correa
Endereco: Rua dos Gafanhotos, 25
CPF: [CPF removido]
RG: 265.245.852-3

Percebam os valores, eles ficam como se não houve recebido os argumentos que passei na hora do new.

Meu código completo: http://pastebin.com/ppQM7VTq

4 Respostas

jacoboliveira

Posta o código do método mostraClientes pot favor

Diego.Souza
void mostraClientes () {
        for (int i = 0; i < this.clientes.length; i++) {

            Cliente cliente = this.clientes[i];

            if (null == cliente) continue;

            System.out.println("Agencia: " + agencia);
            System.out.println("Conta: " + numeroConta);
            System.out.println("Titular: " + cliente.nome);
            System.out.println("Endereco: " + cliente.endereco);
            System.out.println("CPF: " + cliente.getCpf());
            System.out.println("RG: " + cliente.getRg());
        }
    }

Para ver meu código completo: http://pastebin.com/ppQM7VTq

jacoboliveira
Solucao aceita
Eus<blockquote><div class="quote-author">“Diego.Souza:</div>

System.out.println("Agencia: " + agencia);

System.out.println("Conta: " + numeroConta);

</blockquote>

Substituir por

SystemSystem.out.println("Agencia: " + cliente.conta.agencia);
        System.out.println("Conta: " + cliente.conta.numeroConta);
Diego.Souza

Show de bola jacoboliveira,

Com sua resposta eu conferi novamente o código e vi que realmente não fazia sentido o que eu fiz.

Do jeito que eu estava fazendo ele estava referenciando à lugar nenhum, por isso trazia os valores default dos atributos da minha classe Conta.

Resultado:

C:\Users\Diego\workspace\Alura\Construtores>java TestaConta
Agencia: 3086
Conta: 64654878-5
Titular: Viviane Correa
Endereco: Rua dos Gafanhotos, 25
CPF: [CPF removido]
RG: 265.245.852-3

Muito obrigado, vou praticar mais.

Criado 24 de junho de 2016
Ultima resposta 24 de jun. de 2016
Respostas 4
Participantes 2