1
resposta

[Projeto] Desafio Java: Aplicação de compras [Resolvido do meu jeito]

package desafio;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Compras {
    
    private int dinheiro = 5000;
    private String produto;
    private boolean comprando = true;
    
    private Scanner leitura = new Scanner(System.in);
    
    private Map<String,Produto> produtosDisponiveis = new HashMap<>();
    private List<Produto> produtosComprados = new ArrayList<>();
    
    public static void main(String[] args) {
        
        Compras compras =  new Compras();
        
        System.out.println("Saldo Inicial: " + compras.dinheiro);
        
        compras.estocarProdutos();
        
        do {
            
        System.out.print("O que você quer comprar? : ");
        compras.produto = compras.leitura.nextLine().toLowerCase();
        
        if(!compras.produtosDisponiveis.containsKey(compras.produto)) {		
            System.out.println("Produto não disponivel");
        }else {
            
            if(compras.dinheiro >= compras.produtosDisponiveis.get(compras.produto).getPreco()) {
            compras.dinheiro -= compras.produtosDisponiveis.get(compras.produto).getPreco();
            
            compras.produtosDisponiveis.get(compras.produto).diminuirQuantidade();
            
            System.out.println("\nCompra realizada!\n");
            System.out.println("Quantidade no estoque: " + compras.produtosDisponiveis.get(compras.produto).getQuantidade());
            System.out.println("Preço do Produto: " + compras.produtosDisponiveis.get(compras.produto).getPreco());
            
            compras.produtosComprados.add(compras.produtosDisponiveis.get(compras.produto));
            
            System.out.println("Saldo Atual: " + compras.dinheiro);
            
            if(compras.produtosDisponiveis.get(compras.produto).getQuantidade() <= 0) {
                compras.produtosDisponiveis.remove(compras.produto);
            }
            
            }else {
                System.out.println("Dinheiro Insuficiente");
            }
        }
        
        String escolha;
        
        do {
            
        System.out.print("\nContinuar Comprando? : ");
        escolha = compras.leitura.nextLine().toLowerCase();
            
        if(escolha.equals("sim") || escolha.equals("1")) {
            
            compras.comprando = true;
            System.out.println("Continuando...\n");
            
        }else if(escolha.equals("nao") || escolha.equals("0")) {
            compras.comprando = false;
            System.out.println("Parando...\n");
            
            System.out.println("Tudo que você comprou:");
            
            compras.produtosComprados.sort(Comparator.comparing(Produto :: getPreco));
            
            compras.produtosComprados.forEach(produto ->{
                System.out.println(produto.getNome() + ", preço: " + produto.getPreco());
            });
        }
        
        }while(!escolha.equals("sim") && !escolha.equals("1") && !escolha.equals("nao") && !escolha.equals("0"));
        
        }while(compras.comprando);
    }
    
    private void estocarProdutos() {
        
        Object[][] produtosEPrecos = {
                {"sapato", 120, 12}, {"tenis", 200, 30}, {"pizza", 40, 100}, {"fita", 5, 300}, {"sandalia", 60, 8}, 
                {"hamburguer", 15, 42}, {"fone", 50, 4},{"refrigerante", 3, 16}, {"batata", 6, 32}, {"banana", 2, 36}, 
                {"maçã", 1, 18}, {"mochila", 100, 6}, {"controle", 150, 8}, {"video", 20, 600},{"video game", 2000, 2}, 
                {"skate", 250, 19}, {"agua", 1, 60}, {"coca cola", 4, 26}, {"cafe", 7, 20}, {"bone", 30, 12}, {"caderno", 10, 7}, 
                {"lapis", 1, 13}, {"caneta", 1, 13}, {"lapiseira", 5, 13}, {"giz", 2, 13}, {"espada", 300, 1}, {"estojo", 15, 20},
                {"curativo", 10, 64}, {"bandagem", 8, 32}, {"relogio", 500, 3}, {"churrasco", 25, 34}, {"musica", 10, 450},
                {"churrasqueira", 150, 4}, {"caneca", 20, 6},{"copo", 5, 24}, {"microfone", 100, 10}, {"sorvete", 10, 21},
                {"computador", 4000, 2}, {"teclado gamer", 300, 5}, {"teclado", 100, 11},{"mouse gamer", 200, 5}, {"mouse", 80, 11}, 
                {"arroz", 3, 30}, {"feijao", 4, 30}, {"tapete", 30, 6}, {"cadeira", 200, 12}, {"mesa", 150, 4}, 
                {"lampada", 15, 14}, {"camisa", 50, 32}, {"camiseta", 40, 32}, {"calça", 80, 32}, {"vassoura", 10, 6}, 
                {"sabão", 5, 10}, {"liquificador", 120, 4}, {"caneca java", 30 , 1}, {"travesseiro", 60, 6}, {"colchão", 10, 7}, 
                {"escova", 3, 17}, {"pente", 4, 7}, {"pasta de dente", 2, 20}, {"escova de dentes", 5, 24}, {"blusa", 80, 32}, 
                {"cinto", 40, 12}, {"oculos", 20, 16}, {"leite", 4, 20},{"celular", 1500, 12}
        };
        
        for(int i = 0;i < produtosEPrecos.length;i++) {
        produtosDisponiveis.put((String)produtosEPrecos[i][0],new Produto((String)produtosEPrecos[i][0],(Integer)produtosEPrecos[i][1],(Integer)produtosEPrecos[i][2]));
        }
    }
}

class Produto {
    
    private String nome;
    private int preco;
    private int quantidade;
    
    public Produto(String nome,int preco,int quantidade) {
        this.preco = preco;
        this.quantidade = quantidade;
        this.nome = nome;
    }
    
    public String getNome() {
        return nome;
    }
    
    public int getPreco() {
        return preco;
    }

    public int getQuantidade() {
        return quantidade;
    }
    
    public void diminuirQuantidade() {
        quantidade--;
    }
}
1 resposta

Oi, Kauã! Tudo bem?

Que bom que você conseguiu resolver o desafio do seu jeito! Ótimo código, parabéns pela dedicação e elaboração dele! Obrigada também por tê-lo compartilhado com a nossa comunidade do fórum, tenho certeza que ajudará muitos colegas! Caso surja alguma dúvida, sinta-se à vontade em comunicar por aqui, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!