Double appearing dice

Asked

Viewed 62 times

-2

I wonder why when I run this code it shows twice the name of the client and employee, and how to solve to appear only once

package modelo;

import java.util.Date;

public class Pessoa {

    public int codigo;
    public String nome;
    public Date dataNascimento;
    public String endereco;

    public int getCodigo() {
        return codigo;
    }
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public Date getDataNascimento() {
        return dataNascimento;
    }
    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }
    public String getEndereco() {
        return endereco;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }



}

--------------------------------------------------------------------------------package modelo;


public class Funcionario extends Pessoa {

}
-------------------------------------------------------------------------------
package modelo;

public class Cliente extends Pessoa {

}
--------------------------------------------------------------------------------
package modelo;

public class Produto {
    public int codigo;
    public String nome;
    public double preco;
    public int quantidadeEstoque;

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public double getPreco() {
        return preco;
    }
    public void setPreco(double preco) {
        this.preco = preco;
    }
    public int getQuantidadeEstoque() {
        return quantidadeEstoque;
    }
    public void setQuantidadeEstoque(int quantidadeEstoque) {
        this.quantidadeEstoque = quantidadeEstoque;
    }
    public int getCodigo() {
        return codigo;
    }
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }


}
--------------------------------------------------------------------------------package movimento;

import java.util.ArrayList;

import modelo.Produto;

public class ItensVenda {


    public ArrayList<Produto> listaDeProduto = new ArrayList<Produto>();
    public double valorTotal = 0;


    public ArrayList<Produto> getListaDeProduto() {
        return listaDeProduto;
    }
    public void setListaDeProduto(ArrayList<Produto> listaDeProduto) {
        this.listaDeProduto = listaDeProduto;
    }
    public double getValorTotal() {
        return valorTotal;
    }
    public void setValorTotal(double valorTotal) {
        this.valorTotal = valorTotal;
    }


}
--------------------------------------------------------------------------------
package movimento;

import modelo.Cliente;
import modelo.Funcionario;

public class Venda {
    private ItensVenda itensVenda;
    private Funcionario funcionario;
    private Cliente cliente;

    public ItensVenda getItensVenda() {
        return itensVenda;
    }

    public void setItensVenda(ItensVenda itensVenda) {
        this.itensVenda = itensVenda;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }


}
--------------------------------------------------------------------------------
package main;

import java.util.Date;

import modelo.Cliente;
import modelo.Funcionario;
import modelo.Produto;
import movimento.ItensVenda;
import movimento.Venda;

public class Principal {

    public static void main(String[] args) {

        Produto banana = new Produto();
        banana.setCodigo(1);
        banana.setNome("Banana");
        banana.setPreco(8.00);
        banana.setQuantidadeEstoque(100);

        Produto maca = new Produto();
        maca.setCodigo(2);
        maca.setNome("Maca");
        maca.setPreco(8.00);
        maca.setQuantidadeEstoque(100);

        Cliente cliente = new Cliente();
        cliente.setCodigo(1);
        cliente.setDataNascimento(new Date());
        cliente.setEndereco("Rua rocha pombo");
        cliente.setNome("Valdecir");

        Funcionario funcionario = new Funcionario();
        funcionario.setCodigo(1);
        funcionario.setDataNascimento(new Date());
        funcionario.setEndereco("Vila Operaria");
        funcionario.setNome("Ricardo");

        ItensVenda itensVenda = new ItensVenda();
        itensVenda.listaDeProduto.add(banana);
        itensVenda.listaDeProduto.add(maca);

        Venda venda = new Venda();
        venda.setItensVenda(itensVenda);
        venda.setCliente(cliente);
        venda.setFuncionario(funcionario);

        for (int i = 0; i < venda.getItensVenda().getListaDeProduto().size(); i++) {
            System.out.println("Nome do Cliente: " + venda.getCliente().getNome());
            System.out.println("Nome do Funcionario: " + venda.getFuncionario().getNome());
            System.out.println("Nome do Produto: " + venda.getItensVenda().getListaDeProduto().get(i).nome);
        }

    }

}
  • 1

    Post the other classes so we can test.

2 answers

2

From what I understand, the whole problem lies in modeling. It is registering the customer and employee as relevant information for the sales item, when in fact it should only be sales information as a whole and not each item. As you have 2 items, the dice appear twice, one for each item. Then reshape your sale to have that data there and remove them from the sale item.

The AP response solves the symptom, but not the problem. Now there’s something like this:

Fiat 147 todo detonado andando pelas ruas

Doing so solves the punctual problem, but the model remains wrong if it will always need gambiarras to solve. It is better to give the correct solution.

0

I figured it out, just do it like this:

System.out.println("Nome do Cliente: " + venda.getCliente().getNome());
    System.out.println("Nome do Funcionario: " + venda.getFuncionario().getNome());
    for (int i = 0; i < venda.listaDeItensVenda.size(); i++) {

        System.out.println(
                "Nome do Produto: " + venda.getListaDeItensVenda().get(i).getListaDeProduto().get(i).getNome());

    }

i was printing the client name and run inside the for and the correct one is outside

  • 3

    Solved the symptom not the problem.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.