2
respostas

Está dando erro NullPointer ao rodar o programa com getters e setters

O que estou fazendo errado: Criei a classe Conta assim:

public class Conta { private double saldo; private int agencia; private int numero; private Cliente titular;

public void deposita(double valor) {

    this.saldo += valor;
}

public boolean saca(double valor) {
    if (this.saldo >= valor) {
        this.saldo -= valor;
        return true;
    }
        return false;
}

public boolean transfere(double valor, Conta destino) {
    if (this.saldo >= valor) {
        this.saca(valor);
        destino.deposita(valor);
        return true;
    }
    return false;


}

public Cliente getTitular() {
    return titular;
}

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

public double getSaldo() {
    return saldo;
}

public int getAgencia() {
    return agencia;
}

public void setAgencia(int agencia) {
    this.agencia = agencia;
}

public int getNumero() {
    return numero;
}

public void setNumero(int numero) {
    this.numero = numero;
}

}

A classe Cliente:

public class Cliente { private String nome; private String cpf; private String profissao;

public String getCpf() {
    return cpf;
}

public void setCpf(String cpf) {
    this.cpf = cpf;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getProfissao() {
    return profissao;
}

public void setProfissao(String profissao) {
    this.profissao = profissao;
}

} E a classe TestaBanco

public class TestaBanco {

public static void main(String[] args) {
    Cliente paulo = new Cliente();
    paulo.setNome("Paulo Silveira");
    paulo.setCpf("222.222.222-22");
    paulo.setProfissao("programador");

    Cliente Marcella = new Cliente();
    Marcella.setNome("Marcella da Silva");
    Marcella.setCpf("321.321.321-58");
    Marcella.setProfissao("Escrituraria");

    Conta contaDoPaulo = new Conta();
    contaDoPaulo.deposita(100);

    Conta contaDaMarcella = new Conta();
    contaDaMarcella.deposita(1000);

    System.out.println("Saldo Conta Paulo: " + contaDoPaulo.getSaldo());
    System.out.println("Saldo Conta Marcella: " + contaDaMarcella.getSaldo());


    System.out.println(contaDoPaulo.getTitular().getNome());
    System.out.println(contaDaMarcella.getTitular().getNome());
    System.out.println(contaDoPaulo.getTitular());
    System.out.println(paulo);


}

}

Só que ao rodar da erro:

Saldo Conta Paulo: 100.0 Saldo Conta Marcella: 1000.0 Exception in thread "main" java.lang.NullPointerException at TestaBanco.main(TestaBanco.java:24)

Process finished with exit code 1

Linha 24 é esta aqui : " System.out.println(contaDoPaulo.getTitular().getNome());"

Eu tentei fazer ligação da classe Conta com a classe Cliente: contaDoPaulo.getTitular().getNome(); contaDaMarcella.getTitular().getNome();

mas ai deu erro nestas linhas. Então a minha dúvida é como faço a ligação entre as classes?

2 respostas

Eu fiz a seguinte atribuição:

contaDoPaulo.setTitular(paulo); contaDaMarcella.setTitular(Marcella);

é assim que faço a ligação das classes?Depois que fiz a alteração o programa rodou.

Olá Alexandra, tudo bem?

Pelo erro apresentado, parece que o problema está na linha que você mencionou: "System.out.println(contaDoPaulo.getTitular().getNome());". Isso ocorre porque você não está inicializando o objeto "titular" da classe "Conta".

Para resolver isso, você precisa criar um objeto "Cliente" e atribuí-lo à propriedade "titular" da classe "Conta". No seu código, você já criou os objetos "paulo" e "Marcella" da classe "Cliente", então basta fazer a associação com as contas correspondentes, usando o método "setTitular()". Por exemplo:

contaDoPaulo.setTitular(paulo);
contaDaMarcella.setTitular(Marcella);

Assim, a partir dessas linhas, você poderá acessar as propriedades do titular da conta, como o nome, usando o método "getTitular()".

Espero ter ajudado e bons estudos!