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

Exception in thread

Pessoal, no meu código deu NullPointerException quando tentei acessar o atributo nome da classe Pessoa através do construtor. Poderiam me ajudar?

Exception in thread "main" java.lang.NullPointerException
    at br.com.alura.classes.ContaCorrente.<init>(ContaCorrente.java:11)
    at br.com.alura.programa.TestaComparacaoConta.main(TestaComparacaoConta.java:11)

package br.com.alura.programa;

import br.com.alura.classes.Conta;
import br.com.alura.classes.ContaCorrente;

public class TestaComparacaoConta {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Conta conta1 = new ContaCorrente(468189,"Leandro");
        Conta conta2 = new ContaCorrente(468189,"Leandro");


        if(conta1 == conta2){
            System.out.println(" == Iguais");
        }else{
            System.out.println(" =! Diferentes");
        }

        if(conta1.equals(conta2)){
            System.out.println(" equals Iguais");
        }else{
            System.out.println(" equals Diferentes");
        }

    }
}
package br.com.alura.classes;

public class ContaCorrente extends Conta implements Tributavel{


    public ContaCorrente() {    
    }

    public ContaCorrente(int numero, String nome) {    
        this.setNumero(numero);
        this.titular.setNome(nome);
    }

    public void atualiza(double taxa) {
        this.saldo += this.saldo * taxa *2;
    }
    public void imprimir(){
        System.out.print("Conta Corrente ");
    }

    public double calculaTributos() {
        return this.getSaldo() * 0.01;
    }
}
package br.com.alura.classes;

import br.com.alura.exception.ValorInvalidoException;

public abstract class Conta {

    private int numero;
    protected double saldo;
    private double limite;
    private static int totalDeContas;
    Pessoa titular;
    private int agencia;

    Conta() {
        Conta.totalDeContas = Conta.totalDeContas + 1;
    }


    public int getTotalDeContas() {
        return Conta.totalDeContas;
    }

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

    public Pessoa getTitular() {
        return titular;
    }

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

    public double getLimite() {
        return this.limite;
    }

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

    public void setLimite(double limite) {
        this.saldo = limite + this.saldo;
        this.limite = limite;
    }

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

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

    public void saca(double valor) throws Exception {

        if (this.saldo >= valor) {
            this.saldo -= valor;
        } else {
            throw new Exception("Saldo insuficiente");
        }
    }

    public void deposita(double valor) throws ValorInvalidoException {

        if (valor < 0) {
            throw new ValorInvalidoException();
        } else {
            this.saldo += valor -0.20;
        }
    }

    @Override
    public boolean equals(Object obj) {
        Conta outraConta = (Conta) obj;
        return this.numero == outraConta.numero;
    }
    public abstract void atualiza(double taxa);

    public void imprimir() {
        System.out.print("Conta ");
    }

    @Override
    public String toString(){
        return "Uma conta com valor " + this.saldo;
    }

}
2 respostas
solução!

Oi Leandro blz? Antes de abordar o problema só uma dica, quando for colocar código aqui no fórum clique na tag que está escrito INSERIR CÓDIGO. Dessa maneira facilita a gente visualizar seu código pois ele fica formatado =). Quanto ao problema, se você observar no erro ele fala exatamente a linha do ocorrido, diz que você tomou um erro de NullPointerException na linha 11 da sua classe ContaCorrente. Nessa linha se você observar ele faz um this.titular.setNome(nome); Mas quem é esse titular? Se vc entrar na classe Conta, verá que esse titular 'é também uma classe, Pessoa, e nesse momento ele está nulo, então quando vc tenta chamar o método setNome de algo nulo, vc toma esse erro.

Thiago, muito obrigado pela dica sobre a formatação. Já ajustei aqui. Quanto ao código. A Pessoa é um gerente. Fiz um o ajuste na classe Conta e agora está rodando limpo. Muito obrigado.

Pessoa titular = new Cliente("Leandro", "321145826", "22544698732");