Pessoal eu fiz isso completamente sozinho então podem haver maneiras mais simples de solucionar o desafio:
public class Compras implements Comparable<Compras>{
private String nomeItem;
private double valor;
public Compras(String nomeItem, double valor){
this.nomeItem = nomeItem;
this. valor = valor;
}
public String getNomeItem() {
return nomeItem;
}
public void setNomeItem(String nomeItem) {
this.nomeItem = nomeItem;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
@Override
public int compareTo(Compras outracompra){
return this.nomeItem.compareTo(outracompra.getNomeItem());
}
@Override
public String toString(){
return "Nome: "+this.getNomeItem() + " || Preço: " + this.getValor();
}
}
import java.util.ArrayList;
import java.util.List;
public class CartaoCredito {
private double limite;
private List<Compras> compras;
public CartaoCredito(double limite, List<Compras> compras){
this.limite = limite;
this.compras = compras;
}
public double getLimite() {
return limite;
}
public List<Compras> getCompras() {
return compras;
}
public boolean lancaCompra(Compras compras){
if ( this.limite >= compras.getValor()){
this.limite -= compras.getValor();
this.compras.add(compras);
return true;
}else{
return false;
}
}
@Override
public String toString(){
return this.compras.toString() + " || Limite : " + String.format("%2f",this.limite) ;
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class App {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("\n******APLICATIVO DE COMPRAS****\n");
System.out.println("Digite o Limite do seu cartão: ");
String limiteTxt = scanner.nextLine().replace(",", ".");
double limite = Double.parseDouble(limiteTxt);
List<Compras> compras = new ArrayList<>();
CartaoCredito cartao = new CartaoCredito(limite, compras);
while (true) {
System.out.println("Digite 1 para comprar ou 2 para sair: ");
int controle = scanner.nextInt();
scanner.nextLine();
switch (controle) {
case 1:
System.out.println("Digite o nome do item que deseja comprar: ");
String nomeItem = scanner.nextLine().strip();
System.out.println("Digite o preço do item que deseja comprar: ");
String precoTxt = scanner.nextLine().strip().replace(",", ".");
double valor = Double.parseDouble(precoTxt);
Compras itemcomprado = new Compras(nomeItem, valor);
if (cartao.lancaCompra(itemcomprado)){
System.out.println("Compra realizada");
System.out.println(cartao);
}else{
System.out.println("Saldo insuficiente");
compras.remove(itemcomprado);
}
break;
case 2:
System.out.println("Saindo do Programa...");
System.out.println(cartao);
System.exit(controle);
default:
break;
}
}
}
}