2
respostas

Me deem sugestões, Dicas e afins (Código Java)

Aos desenvolvedores de Java em plantão.. Gostaria que, se possível, vocês analisassem o meu código e me dessem sugestões de melhorias em geral ou se tem alguma parte do código que poderia ser feito diferente. Algo que vocês achariam importante me dizer.

Fica a observação Sou iniciante na linguagem e tenho aproximadamente um mês de aprendizado em Java, poucas aulas na faculdade, 90% do que eu usei nesse código foi o primeiro curso de Java de vocês (Alura).

imagem do meu primeiro curso realizado pela alura -  Curso Java: criando a sua primeira aplicaçãoNeste programa, busquei fazer uma simulação básica de como funcionam as máquinas de autosserviço em lojas, onde você mesmo realiza a compra

    public static void main(String[] args) {
        Scanner scanner = new Scanner (System.in);

        double carrinhoDeCompra = 0;

        //Variável padrão para realizar o calculo
        double precoCompra; // antes eu tinha declarado essas var dentro dos case, mas com isso dava o erro dizendo que já tinha sido criado no escopo
        int qtdProduto; // mas se eu declarar fora eu posso utilizá-la novamente sem precisar criar várias var

        while(codigo != 104){

            System.out.println("""
                    Digite o código do produto:""");
            codigo = scanner.nextInt();

            switch (codigo) {
                case 100:
                    System.out.println("""
                            ___
                            Produto Selecionado: Cachorro Quente.
                            Preço Unitário: 8,50;
                            |
                            Digite a quantidade que deseja comprar:""");

                    qtdProduto = scanner.nextInt();
                    precoCompra = calcularValor(valorProduto, qtdProduto);

                    if (qtdProduto == 1) {
                        System.out.printf("Um cachorro quente é R$%,.2f\n", precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor total da compra R$%,.2f\n", carrinhoDeCompra);

                    } else{
                        System.out.printf("A compra /ou acréscimo de %d cachorro quente é de R$%,.2f\n", qtdProduto, precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor da compra: R$%,.2f\n", carrinhoDeCompra);
                    }
                    break;
                case 101:
                    System.out.println("""
                            ___
                            Produto Selecionado: Bauru Simples.
                            Preço Unitário: 10,00;
                            |
                            Digite a quantidade que deseja comprar:""");

                    qtdProduto = scanner.nextInt();
                    precoCompra = calcularValor(valorProduto, qtdProduto);

                    if (qtdProduto == 1) {
                        System.out.printf("Um cachorro quente é R$%,.2f\n", precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor total da compra R$%,.2f\n", carrinhoDeCompra);

                    } else{
                        System.out.printf("A compra /ou acréscimo de %d cachorro quente é de R$%,.2f\n", qtdProduto, precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor da compra: R$%,.2f\n", carrinhoDeCompra);
                    }
                    break;
                case 102:
                    System.out.println("""
                            ___
                            Produto Selecionado: Hamburguer.
                            Preço Unitário: 12,00;
                            |
                            Digite a quantidade que deseja comprar:""");

                    qtdProduto = scanner.nextInt();
                    precoCompra = calcularValor(valorProduto, qtdProduto);

                    if (qtdProduto == 1) {
                        System.out.printf("Um cachorro quente é R$%,.2f\n", precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor total da compra R$%,.2f\n", carrinhoDeCompra);

                    } else{
                        System.out.printf("A compra /ou acréscimo de %d cachorro quente é de R$%,.2f\n", qtdProduto, precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor da compra: R$%,.2f\n", carrinhoDeCompra);
                    }
                    break;
2 respostas

Restante do código /

                case 103:
                    System.out.println("""
                            ___
                            Produto Selecionado: Refrigerante.
                            Preço Unitário: 4,50;
                            |
                            Digite a quantidade que deseja comprar:""");

                    qtdProduto = scanner.nextInt();
                    precoCompra = calcularValor(valorProduto, qtdProduto);

                    if (qtdProduto == 1) {
                        System.out.printf("Um cachorro quente é R$%,.2f\n", precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor total da compra R$%,.2f\n", carrinhoDeCompra);
                    } else{
                        System.out.printf("A compra /ou acréscimo de %d cachorro quente é de R$%,.2f\n", qtdProduto, precoCompra);
                        carrinhoDeCompra += precoCompra;
                        System.out.printf("Valor da compra: R$%,.2f\n", carrinhoDeCompra);
                    }
                    break;
                case 104:
                    System.out.println("Compra finalizada");
                    System.out.printf("Valor total da compra foi de R$%,.2f", carrinhoDeCompra);
                    break;
                default:
                    System.out.println("Código inválido");
            }
        }

    }

    public static double calcularValor (double valorProduto, int qtdProduto){
        if (codigo == 100){
            valorProduto = 8.50;
        }
        if (codigo == 101) {
            valorProduto = 10.00;
        }
        if (codigo == 102) {
            valorProduto = 12.00;
        }
        if (codigo == 103) {
            valorProduto = 4.50;
        }

        return valorProduto * qtdProduto;
    }

Fala Gustavo,

De imediato, o que você pode tentar fazer é abstrair o produto para um Objeto. Crie o objeto Produto com os devidos atributos, como o código do produto, valor, nome e o que mais precisar. Depois você também pode tentar transformar o conceito de carrinho em um Objeto também. Um carrinho tem uma quantidade de Produtos, um valor total e o que mais for necessário.

Só com isso você já vai conseguir se livrar de vários desses ifs, vai tornar o código mais limpo e compreensível, além de fazer o bom uso da orientação a objetos.

Se quiser, pode entrar em contato comigo pela rede social que tá no meu perfil, vou ficar feliz em ajudar