package br.com.alura;
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);
System.out.println("Defina o limite do seu cartão:");
double saldo = Double.parseDouble(scanner.nextLine());
List<Compra> listaCompras = new ArrayList<>();
int opcao = 0;
while (opcao != 4) {
System.out.println("""
Digite a sua opção:
1 - Nova compra
2 - Exibir compras realizadas
3 - Saldo atual do cartão
4 - Sair
""");
opcao = Integer.parseInt(scanner.nextLine());
switch (opcao) {
case 1: {
System.out.println("Informe o produto:");
String desc = scanner.nextLine();
System.out.println("Informe o valor do produto:");
double valor = Double.parseDouble(scanner.nextLine());
if (valor <= saldo) {
Compra c = new Compra();
c.setDescricao(desc);
c.setValor(valor);
listaCompras.add(c);
saldo -= valor;
System.out.println("Compra realizada com sucesso!");
} else {
System.out.println("Saldo insuficiente!");
}
break;
}
case 2: {
// Ordena as compras por valor usando Comparable
Collections.sort(listaCompras);
System.out.println("=== Compras realizadas (ordenadas por valor) ===");
for (Compra c : listaCompras) {
System.out.println(c);
}
break;
}
case 3: {System.out.printf("Saldo atual: R$ %.2f \n", saldo);
break;
}
case 4: {System.out.println("Saindo...");
break;
}
default: {System.out.println("Opção inválida");
break;
}
}
}
scanner.close();
}
}
package br.com.alura;
public class Compra implements Comparable<Compra> {
private String descricao;
private double valor;
public Compra() {
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public void setValor(double valor) {
this.valor = valor;
}
public String getDescricao() {
return descricao;
}
public double getValor() {
return valor;
}
@Override
public int compareTo(Compra outra) {
return Double.compare(this.valor, outra.valor); // ordena de forma crescente
}
@Override
public String toString() {
return descricao + " - R$" + valor;
}
}