Fiz um pouco diferente com o projeto, gostaria de saber se é valido.
import java.util.ArrayList;
import java.util.List;
public class Produtos extends Dados implements Comparable<Produtos>{
private String item;
private double valorItem;
private List<Produtos> produtos; // -> Necessario a crescimo do List<+ a classe> e a variavel.
public Produtos() {
this.produtos = new ArrayList<>();
}
public void adicionarProduto(String item, double valorItem) { /* -> Aqui foi configurado para que item escrito e o
valor colcocado pelo usuario possa ser registrado e armazenado pelo produtos.add(novoProduto) */
Produtos novoProduto = new Produtos();
novoProduto.setItem(item);
novoProduto.setValorItem(valorItem);
produtos.add(novoProduto);
}
public List<Produtos> getProdutos() {
return produtos;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public double getValorItem() {
return valorItem;
}
public void setValorItem(double valorItem) {
this.valorItem = valorItem;
}
@Override
public int compareTo(Produtos outroProduto) {
return Double.valueOf(this.valorItem).compareTo(Double.valueOf(outroProduto.valorItem));
}
}
public class Dados {
private double limite;
public double getLimite() {
return limite;
}
public void setLimite(double limite) {
this.limite = limite;
}
}
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
var comprador = new Produtos();
var teclado = new Scanner(System.in);
int decisao = 1;
double valorTotal = 0;
comprador.setLimite(1000);
System.out.println("Limite do cartão: R$ "+ comprador.getLimite());
System.out.println("********************************************");
double valorAtual = comprador.getLimite();
do {
System.out.println("Digite a descrição do produto");
System.out.print("Produto: ");
comprador.setItem(teclado.next());
System.out.println();
System.out.println("Digite o valor da compra:");
System.out.print("R$ ");
comprador.setValorItem(teclado.nextDouble());
if(comprador.getValorItem() <= valorAtual) {
System.out.println("Compra Realizada!");
System.out.println("------------------------------");
System.out.println("Digite 0 para Sair ou 1 para Continuar");
decisao = teclado.nextInt();
comprador.adicionarProduto(comprador.getItem(), comprador.getValorItem()); /* -> Aqui foi chamado um
metodo public void adicionarProduto(String item, double valorItem) */
} else {
System.out.println("Saldo Insulficiente!!!");
decisao = 0;
}
valorAtual = valorAtual- comprador.getValorItem();
} while (decisao == 1 && valorAtual > 0);
System.out.println("********************************************");
System.out.println("************ COMPRAS REALIZADAS ************");
Collections.sort(comprador.getProdutos());
for (Produtos produto : comprador.getProdutos()){
System.out.println(produto.getItem() + " R$ " + produto.getValorItem());
valorTotal = valorTotal + produto.getValorItem();
}
System.out.println();
System.out.println("Valor Total");
System.out.println("R$ "+ valorTotal);
System.out.println("********************************************");
System.out.println("Saldo: R$"+ valorAtual);
System.out.println("********************************************");
}
}