Bom esta foi a maneira que eu fiz. Me parece estar funcionando normalmente, mas não sei se está de acordo com as boas práticas. Separei a classe CartaoDeCredito e a Classe Principal por: "====="
import java.util.ArrayList; import java.util.List;
public class CartaoDeCredito {
private double limite;
private List<Double> valorDoProduto;
private List<String> produto;
//Construtor:
public CartaoDeCredito(double limite) {
this.limite = limite;
this.valorDoProduto = new ArrayList<>();
this.produto = new ArrayList<>();
}
//Getters & Setters:
public double getLimite() {
return limite;
}
public List<Double> getValorDoProduto() {
return valorDoProduto;
}
public List<String> getProduto() {
return produto;
}
//Métodos:
public void compra(double valor, String nomeDoProduto) {
if (this.limite > valor) {
this.limite -= valor;
valorDoProduto.add(valor);
produto.add(nomeDoProduto);
System.out.println("Compra Realizada !");
} else {
System.out.println("Saldo Insuficiente");
}
}
}
===============================================================
import br.com.alura.compras.modelos.CartaoDeCredito;
import java.util.Collections; import java.util.Objects; import java.util.Scanner;
public class Principal { public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Limite do Cartão de Crédito: R$");
double valorLimite = entrada.nextDouble();
CartaoDeCredito cliente = new CartaoDeCredito(valorLimite);
double valorTotal = 0;
while (true) {
System.out.print("Valor da compra: R$");
double preco = entrada.nextDouble();
valorTotal += preco;
System.out.print("Nome do Produto: ");
String nomeProduto = entrada.next();
cliente.compra(preco, nomeProduto);
System.out.print("Tecle qualuqer tecla para continuar ou S para Sair: ");
String resposta = entrada.next().toUpperCase();
if (resposta.equals("S")){
break;
}
}
System.out.println("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
System.out.println(" C O M P R A S ");
System.out.println("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
System.out.println("PRODUTOS VALOR ");
Collections.sort(cliente.getProduto());
for (int i = 0; i < cliente.getProduto().size(); i++) {
System.out.printf("%-30s %5s%n", cliente.getProduto().get(i), "R$" + cliente.getValorDoProduto().get(i));
}
System.out.println("");
System.out.printf("%-30s %5s%n", "TOTAL", "R$" + valorTotal);
}
}