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

É possível adicionar diversos valores à uma variável num linkedList?

Olá! Eu sou novato em programação (to estudando sozinho tem 2 meses) e tava querendo criar um programa simples de restaurante como exercício. Nele, o garçom iria identificar quantos clientes teriam na mesa e adicionar para cada cliente o pedido de forma distinta.

Coloquei cada "cliente" em um espaço do "linkedList" como c1, c2 e c3. Atribui cada cliente uma posição na mesa, uma bebida e o valor da bebida.

        LinkedList<Cliente> lista = new LinkedList<Cliente>();

        Comida c1 = new Comida(1, "Cerveja", 8);
        Comida c2 = new Comida(2, "Refrigerante", 6);
        Comida c3 = new Comida(3, "Chopp", 7);

        lista.add(c1);
        lista.add(c2);
        lista.add(c3);

Eu queria saber se tem como eu adicionar mais um item aos clientes. Por exemplo, queria colocar para o cliente 1 (c1), além da Cerveja, queria adicionar uma água, para que no final ele apareça com o consumo de uma cerveja e uma água.

4 respostas

Fala Alessandro, tudo bem?

Dá sim, porém você teria que trocar essa String que representa um item (Cerveja, Refrigerante, Chopp) por uma lista de Strings. Na prática, sua classe Comida ficaria algo parecido com esse código:

public class Comida {
    public int id;
     public List<String> itens;

    public Comida (int id, List<String> itens) {
        this.id = id;
        this.itens = itens;
    }

    public void addItem(String item) {
        itens.add(item);
    }
}

E para criar uma Comida:

Comida c1 = new Comida(1, Arrays.asList("Cerveja", "Chopp"));
c1.addItem("Água");
solução!

Olá Alessandro!

Criei aqui uma maneira bacana de resolver seu problema utilizando ENUMS's:

Classe Cliente:

public class Cliente {

    private int mesa;
    private ArrayList<Pedido> pedido = new ArrayList<>();
    private double comanda;

    public Cliente(int mesa){
        this.mesa = mesa;
    }

    public void realizarPedido(Pedido ... itens){
        for(Pedido item : itens){
            pedido.add(item);
        }

    }

    public double gerarComanda() {
        comanda = 0;
        for (Pedido item : pedido) {
            comanda += item.getValor();
        }
        return comanda;
    }
}

Classe Pedido:

public enum Pedido {

    CERVEJA(8),
    REFRIGERANTE(6),
    CHOPP(7),
    AGUA(3);

    private int valor;

    Pedido(int valor) {
        this.valor = valor;
    }

    public int getValor(){
        return valor;
    }
}

Classe Restaurante (Main):

public class TestRestaurante {
    public static void main(String[] args) {

        // PRIMEIRO PEDIDO DO CLIENTE 01
        Cliente cliente01 = new Cliente(10);
        cliente01.realizarPedido(Pedido.REFRIGERANTE, Pedido.CHOPP);
        System.out.println(cliente01.gerarComanda());

        // PRIMEIRO PEDIDO DO CLIENTE 02
        Cliente cliente02 = new Cliente(11);
        cliente02.realizarPedido(Pedido.AGUA, Pedido.CERVEJA);
        System.out.println(cliente02.gerarComanda());

        // SEGUNDO PEDIDO DO CLIENTE 01
        cliente01.realizarPedido(Pedido.AGUA);
        System.out.println(cliente01.gerarComanda());

        // SEGUNDO PEDIDO DO CLIENTE 02
        cliente02.realizarPedido(Pedido.CERVEJA);
        System.out.println(cliente02.gerarComanda());


    }
}

Espero que te ajude! :D

Bons estudos! ^^

Obrigado pela ajuda, galera! Mas como disse ainda to no começo. Ainda não conheço o "enum". Estou fazendo uns testes aqui e experimentando. (aos poucos vou entendendo)

Fala Alessandro, tranquilo?

Sua dúvida foi solucionada?