Classe produto
public class Produto implements Comparable<Produto> {
private String descricao;
private double valor;
public Produto(String descricao, double valor) {
this.descricao = descricao;
this.valor = valor;
}
public String getDescricao() {
return descricao;
}
public double getValor() {
return valor;
}
@Override
public int compareTo(Produto i) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(i.valor));
}
@Override
public String toString() {
return "Produto: descricao=" + descricao + " valor=" + valor;
}
}
classe Cartao
import java.util.ArrayList;
import java.util.List;
public class Cartao {
private double limite;
private double saldo;
private List<Produto> compras;
public Cartao(double limite) {
this.limite = limite;
this.saldo = limite;
this.compras = new ArrayList<>();
}
public double getSaldo() {
return saldo;
}
public boolean lancaCompra(Produto compra) {
if(this.saldo > compra.getValor()){
this.saldo -= compra.getValor();
this.compras.add(compra);
return true;
}
return false;
}
public List<Produto> getCompras() {
return compras;
}
}
Main
import java.util.Collections;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
int sair = 1;
System.out.println("digite o limite do cartao");
double limite = leitura.nextDouble();
Cartao cartao = new Cartao(limite);
while (sair != 0) {
System.out.println("vamos as compras?");
System.out.println("Digite o nome do produto:");
String nomeDoProduto = leitura.next();
System.out.println("Digite o valor do produto");
double valorDoProduto = leitura.nextDouble();
Produto produto = new Produto(nomeDoProduto, valorDoProduto);
boolean compraRealizada = cartao.lancaCompra(produto);
if (compraRealizada) {
System.out.println("Compra realizada!");
System.out.println("Digite 0 para sair ou 1 para continuar");
sair = leitura.nextInt();
}else {
System.out.println("Saldo insuficiente!");
sair = 0;
}
}
Collections.sort(cartao.getCompras());
for (Produto c : cartao.getCompras()) {
System.out.println(c.getDescricao() + " - " +c.getValor());
}
}
}