1
resposta

[Reclamação] Desafio: aplicação de compras.

package br.com.AplicacaoDeCompras.principal;

import java.util.ArrayList;
import java.util.Scanner;
import br.com.AplicacaoDeCompras.model.Cliente;
import br.com.AplicacaoDeCompras.model.Produto;

public class PrincipalCompra {
    private static Scanner sc;

    public static void main(String[] args) {

        sc = new Scanner(System.in);
        int opcao = 1;

        ArrayList<Cliente> listaCliente = new ArrayList<>();
        ArrayList<Produto> listaProduto = new ArrayList<>();

        Cliente cliente = new Cliente();
        // Inicializa o cliente fora do laço para manter saldo persistente

        while (opcao == 1) {
            Produto produto = new Produto();
            System.out.println("********* MENU  **********");
            System.out.println("Digite 0 para sair");
            System.out.println("Digite 1 para compras");
            opcao = sc.nextInt();

            if (opcao == 1) {
                if (cliente.getSaldoAtualizado() <= 0) {
                    System.out.println("Digite o saldo do seu cartão:");
                    cliente.setSaldo(sc.nextDouble());
                }

                System.out.println("Descrição do produto:");
                sc.nextLine(); // Limpa buffer do scanner
                produto.setDescricao(sc.nextLine());

                System.out.println("Valor do produto:");
                produto.setValor(sc.nextDouble());

                // Verifica saldo suficiente antes de adicionar o produto
                if (!cliente.validaCompra(produto)) {
                    continue; // Volta ao menu caso o saldo seja insuficiente
                }

                listaProduto.add(produto);
                cliente.atualizarSaldo(produto);

                // Adiciona cliente se não estiver na lista
                if (!listaCliente.contains(cliente)) {
                    listaCliente.add(cliente);
                }

                System.out.println("Saldo Atualizado: " + cliente.getSaldoAtualizado());
            }

        }

        System.out.println("Lista de Clientes: " + listaCliente);
        System.out.println("Lista de Produtos: " + listaProduto);

        sc.close();
    }

}

classe Cliente

package br.com.AplicacaoDeCompras.model;

public class Cliente {
    private double saldoCartao;
    private double saldoAtualizado;
    private Produto produto;

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public double getSaldo() {
        return saldoCartao;
    }

    public void setSaldo(double saldo) {
        this.saldoCartao = saldo;
    }

    public double getSaldoAtualizado() {
        return saldoAtualizado;
    }

    public void setSaldoAtualizado(double saldoAtualizado) {
        this.saldoAtualizado = saldoAtualizado;
    }

    @Override
    public String toString() {
        return "Cliente [Saldo Atualizado=" + saldoAtualizado + "]";
    }
//	public double valorAtualizadoDoSaldo(Produto produto) {
//	    saldoAtualizado = saldoAtualizado > 0 ? saldoAtualizado : saldoCartao;  // Define saldoCartao inicial se não houver saldoCartao atualizado
//	    saldoAtualizado -= produto.getValor();
//	    return saldoAtualizado;
//	}

    public double valorAtualizadoDoSaldo(Produto produto) {
        if (saldoAtualizado == 0) {

            saldoAtualizado = saldoCartao - produto.getValor();
        } else {
            saldoAtualizado -= produto.getValor();
        }
        return saldoAtualizado;
    }

    public boolean validaCompra(Produto produto) {
        if (saldoAtualizado == 0) {
            saldoAtualizado = saldoCartao;  // Inicializa saldo atualizado caso não exista
        }

        if (produto.getValor() > saldoAtualizado) {
            System.out.println("Saldo insuficiente.");
            return false;
        }
        return true;
    }
    public void atualizarSaldo(Produto produto) {
        saldoAtualizado -= produto.getValor();
    }
}

Classe produto:

package br.com.AplicacaoDeCompras.model;

public class Produto {

    private String descricao;
    private Double valor;


    
    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Double getValor() {
        return valor;
    }

    public void setValor(Double valor) {
        this.valor = valor;
    }
    @Override
    public String toString() {
        return "Produto [Descrição=" + descricao + ", Valor=" + valor + "]";
    }
}
1 resposta

Olá, Kayo! Tudo bem?

Analisando o seu código posso dizer que você fez um ótimo trabalho, ele está correto!

Porém, no título do seu post você usou a tag de [Reclamação] você teve algum problema ou inconsistência que não foi do seu agrado? Poderia dar mais informações?

Fico no aguardo!