public class CalculaCompra{
public boolean debita(Carrinho compra, Cliente cliente) {
if (compra.getValorItem() <= cliente.getLimite()){
cliente.atualizaLimite(compra.getValorItem());
return true;
}
return false;
}
}
public class Cliente {
private String nome;
private double limite;
public Cliente(String nome, double limite) {
this.nome = nome;
this.limite = limite;
}
public String getNome() {
return nome;
}
public double getLimite() {
return limite;
}
public void atualizaLimite(double valorDebitado){
this.limite -= valorDebitado;
}
}
public class Carrinho extends CalculaCompra implements Comparable<Carrinho>{
private String nomeItem;
private double valorItem;
public String getNomeItem() {
return nomeItem;
}
public void setNomeItem(String nomeItem) {
this.nomeItem = nomeItem;
}
public double getValorItem() {
return valorItem;
}
public void setValorItem(double valorItem) {
this.valorItem = valorItem;
}
@Override
public String toString() {
return "Item: " + getNomeItem() + " Valor R$ " + getValorItem();
}
@Override
public int compareTo(Carrinho outraCarrinho) {
return this.getNomeItem().compareTo(outraCarrinho.getNomeItem());
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Carrinho> listaPedido = new ArrayList<>();
int opcao = -1;
String menu = """
============ MENU DE OPÇÕES =============
1 - Incluir um produto
0 - Encerrar
Informe uma opção:
""";
Cliente cliente = new Cliente("Rodolfo", 1500);
while (opcao != 0){
System.out.println(menu);
opcao = scanner.nextInt();
if (opcao == 1){
Carrinho compra = new Carrinho();
System.out.println("Informe o nome do produto: ");
String nomeItem = scanner.next();
System.out.println("Informe o valor do produto R$ ");
double valorItem = scanner.nextDouble();
compra.setNomeItem(nomeItem);
compra.setValorItem(valorItem);
if (compra.debita(compra, cliente)){
listaPedido.add(compra);
}else{
System.out.println("O valor da compra ultrapassa o limite do cartão!");
System.out.println("Seu limite atual é de: " + cliente.getLimite());
}
}else if(opcao != 0){
System.out.println("O valor do argumento informado é inválido!");
}else{
System.out.println("Obrigado pela preferência!");
}
}
Collections.sort(listaPedido);
System.out.println("Olá, " + cliente.getNome() + " sua lista final de pedidos: ");
if(!listaPedido.isEmpty()){
for (Carrinho item: listaPedido){
System.out.printf("""
Produto: %s Valor R$: %.2f
""", item.getNomeItem(), item.getValorItem());
}
}else{
System.out.println("Sua lista está vazia");
}
}
}