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

Atributos : Agência e Número são inicializando zerados

Nobres Amigos, bom dia

Sou um bebezinho com relação a programação Java e por conta disso estou tentando me empenhar bastante em todo curso.

De acordo com o proposto na Aula 6 ( Construtor ), o objetivo era não permitir que os dados fossem inicializados com 0. Bom fiz o seguinte, no construtor eu coloquei para validar os dados passados na construção

    public Conta(int agencia, int numero) {
        if (agencia > 0 && numero > 0) {
            this.agencia = agencia;
            this.numero  = numero;
            System.out.println("Conta criada com Sucesso!");
        } else {
            System.out.println("Conta não pode ser criada!");
            return;
        }

Forcei na construção o envio de dados zerados

        Conta conta = new Conta(0, 0);

        System.out.println(conta.getNumero());

e esse foi o resultado

Conta não pode ser criada!
0

O que deixei passar ? O que não estou fazendo, já tentei até ao invés de usar return, colocar break mas da erro e o código não compila (óbvio)

Forte abraço a todos

5 respostas

Toda vez que você instância um objeto ele ja foi criado,

    Conta conta = new Conta(0, 0);

Aqui ele ja foi criado independente da condição em que você colocou dentro do construtor. A condição deveria ser antes da criação do construtor.

solução!

Você pode usar Integer ao invés de int, isso permitirá você declarar nulo quanto numero e agencia for menor que zero

public class Conta {
    private double saldo; 
    private Integer agencia;
    private Integer numero;

    public Conta(Integer agencia, Integer numero) {
        if (agencia > 0 && numero > 0) {
            this.agencia = agencia;
            this.numero  = numero;
            System.out.println("Conta criada com Sucesso!");
        } else {
            System.out.println("Conta criada sem numero e agencia");
            this.agencia = null;
            this.numero =null;
        }
    }      
    public Integer getAgencia() {
        return agencia;
    }
}

forçando o resultado com agencia e numero = 0

public class Programa {

    public static void main(String[] args) {
        Conta contaCliente = new Conta(0, 0);
        contaCliente.getAgencia();
    }
}

resultado:

Conta criada sem numero e agencia

o objeto contaCliente foi criado mas com agencia e numero vazio, se executar o método get verá que não aparecerá zero.link do post explicando a diferença entre int e Integer https://www.alura.com.br/artigos/diferenca-entre-int-e-integer-em-java/

@Luciano da Silva Sousa Mendel e @leonardo jansen

Obrigado pela ajuda e um grande abraço para todos

Att.,

Alexandre Castro

você poderia também adicionar uma exceção, assim ela não permitiria a criação do objeto.

public Conta(int agencia, int numero) throws Exception {
        if (agencia > 0 && numero > 0) {
            this.agencia = agencia;
            this.numero  = numero;
            System.out.println("Conta criada com Sucesso!");
        } else {
                          throw new Exception("Conta não pode ser criada");

        }

Ai sairia da forma como você quer.

Olá Alexandre, como sua dúvida foi solucionada, estou fechando o tópico, ok?

Qualquer coisa não hesite em abrir outro :)