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 + "]";
}
}