package newcompras.br.com.newcompras;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int opcao = 1;
System.out.print(" Digite o limite do cartão de crédito: R$ ");
double limiteCartao = scanner.nextDouble();
CartaoDeCredito cartao = new CartaoDeCredito(limiteCartao);
while (opcao != 0) {
scanner.nextLine();
System.out.print(" Digite a descrição da compra: ");
String descricao = scanner.nextLine();
System.out.print(" Digite o valor da compra: R$ ");
while (!scanner.hasNextDouble()) {
System.out.println(" Valor inválido! Digite um número para o valor da compra:");
scanner.nextLine();
System.out.print(" Digite o valor da compra: R$ ");
}
double valor = scanner.nextDouble();
Compra novaCompra = new Compra(descricao, valor);
if (cartao.registraCompra(novaCompra)) {
System.out.println(" Compra realizada com sucesso!");
System.out.printf("\n Saldo Atual: %.2f\n", cartao.getSaldo());
do {
System.out.print("\nDigite 0 para sair ou 1 para continuar nas compras: ");
while (!scanner.hasNextInt()) {
System.out.println(" Opção inválida! Por favor, digite 0 ou 1.");
scanner.nextLine();
System.out.print("\nDigite 0 para sair ou 1 para continuar: ");
}
opcao = scanner.nextInt();
if (opcao != 0 && opcao != 1) {
System.out.println(" Opção inválida! Por favor, digite 0 para sair ou 1 para continuar.");
}
} while (opcao != 0 && opcao != 1);
System.out.println();
}else {
System.out.println(" Saldo insuficiente!");
break;
}
}
System.out.println("***************************");
System.out.println("COMPRAS REALIZADAS:");
// lista de compras ORDENADA por valor
for (Compra compra : cartao.getListaDeComprasOrdenada()) {
System.out.printf("%s - %.2f\n", compra.getDescricao(), compra.getValor());
}
System.out.println("***************************");
System.out.printf(" Saldo do cartão: %.2f\n", cartao.getSaldo());
System.out.println("***************************");
scanner.close();
}
}
package newcompras.br.com.newcompras;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CartaoDeCredito {
private double limite;
private double saldo;
private List<Compra> listaDeCompras;
public CartaoDeCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.listaDeCompras = new ArrayList<>();
}
public boolean registraCompra(Compra compra) {
if (this.saldo >= compra.getValor()) {
this.saldo -= compra.getValor();
this.listaDeCompras.add(compra);
return true;
}
return false;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getListaDeComprasOrdenada() {
Collections.sort(this.listaDeCompras);
return this.listaDeCompras;
}
public double getLimite() {
return limite;
}
}
package newcompras.br.com.newcompras;
import java.util.Objects;
public class Compra implements Comparable<Compra> {
private String descricao;
private double valor;
public Compra(String descricao, double valor) {
this.descricao = descricao;
this.valor = valor;
}
public String getDescricao() {
return descricao;
}
public double getValor() {
return valor;
}
@Override
public String toString() {
return String.format("%s - %.2f", descricao, valor);
}
@Override
public int compareTo(Compra outraCompra) {
return Double.compare(this.valor, outraCompra.valor);
}
}