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

Por que estou tendo um Null Pointer Exception?

Olá pessoal! Estou testando um pouco meus conhecimentos tentando criar um sisteminha de vendas em que tenho uma classe Mercadoria e uma classe Venda. Ao testar uma venda recebo um Null Pointer Exception no método extrato(), que deveria imprimir os dados do objeto mercadoria e da venda. Abaixo estão as classes e minha classe main. Eu compreendo que o método não está apontando para o objeto Mercadoria criado na venda, mas não consegui entender o que estou fazendo errado! Alguém pode dar uma ajuda? Valeu!

public class Mercadoria {
    private String codigo;
    private String tipo;
    private String nome;
    private double quantidade;
    private double preco;



    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getNome() {
        return nome;
    }

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

    public double getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(double quantidade) {
        this.quantidade = quantidade;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public String getCodigo(){
        return this.codigo;
    }


}
public class Venda {
    private double valorTotal;
    private double unidades;
    private Mercadoria mercadoria;

    public Venda(Mercadoria mercadoria, double unidades) {
    }

    public void venda(double unidades) {
        this.valorTotal = unidades * this.mercadoria.getPreco();
        this.mercadoria.setQuantidade(unidades -= this.mercadoria.getQuantidade());
    }

    public void extrato() {
        System.out.println("Extrato de venda: ");
        System.out.println("Produto: " + this.mercadoria.getNome());
        System.out.println("Código do produto: " + this.mercadoria.getCodigo());
        System.out.println("tipo: " + this.mercadoria.getTipo());
        System.out.println("quantidade: " + this.unidades);
        System.out.println("Valor da transação: " + this.valorTotal);
    }
}

Main:

public class TesteTrasacao {
    public static void main(String[] args){
        Mercadoria chuveiro = new Mercadoria();
        chuveiro.setNome("Chuveiro");
        chuveiro.setPreco(10);
        Venda v1 = new Venda(chuveiro, 5);

        v1.extrato();    

    }

}
3 respostas
solução!

Davi, tudo bem ?

Repara que sua venda recebe dois parametros no construtor, você não atualiza as referencias da sua classe.

public class Venda {
    private double valorTotal;
    private double unidades;
    private Mercadoria mercadoria;

    public Venda(Mercadoria mercadoria, double unidades) {
    }

Você devia fazer algo assim :

    public Venda(Mercadoria mercadoria, double unidades) {
            this.mercadoria = mercadoria;
        this.unidades = unidades;

    }

Testa ai e fala para gente

Valeu Matheus, era isso mesmo! Nem estava percebendo que faltou o básico rsrs agora está funcionando

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software