Código classe principal
package principal;
import armazena.Carteira;
import armazena.Produto;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
//Criando o scanner para capturar digitos do teclado
Scanner entrada = new Scanner(System.in);
//Interações com o usuário
mostra("Quanto você pode gastar?");
double valorLimite = entrada.nextDouble();
//Criando a carteira de compras
Carteira compra1 = new Carteira(valorLimite);
//Configurações de compra
for (int i = 0; i >= 0; i++) {
//Interações com o usuário
entrada.nextLine();
mostra("Digite o nome do produto:");
String nomeProduto = entrada.nextLine();
mostra("Digite o valor do produto:");
double valorProduto = entrada.nextDouble();
//Criando o produto com seu nome e preço, adicionando ele a uma lista e ordenando a lista
Produto produto = new Produto(nomeProduto, valorProduto);
boolean produtoComprado = compra1.adicionaProduto(produto);
Collections.sort(compra1.getListaDeProduto());
// OUTRO JEITO DE ORDENAR
//compra1.getListaDeProduto().sort(Comparator.comparing(Produto::getValor));
//Interações com o usuário e mostra as informações de compra
if(produtoComprado) {
if (compra1.getLimite() > 0) {
mostra("Compra realizada com sucesso.");
mostra("Seu saldo restante é: " + compra1.getLimite());
mostra("""
Continuar comprando?
1-Sim
2-Não
""");
int opcao = entrada.nextInt();
if(opcao == 2) {
mostra("Muito obrigado por comprar conosco.");
mostraLista(compra1);
break;
}
}else if (compra1.getLimite() == 0) {
mostra("Você não tem mais limite.");
mostraLista(compra1);
break;
}
}else{
mostra("O valor ultrapassou seu limite.");
mostra("""
Quer escolher outro produto?
1-Sim
2-Não
""");
int opcao = entrada.nextInt();
if (opcao == 2) {
mostra("Muito obrigado por comprar conosco.");
mostraLista(compra1);
break;
}else if (opcao == 1){
}
}
}
}
//Método para mostrar Strings
private static void mostra(String texto) {
System.out.println(texto);
}
//Método para mostrar a lista
private static void mostraLista(Carteira lista) {
mostra("Essas são suas compras:");
mostra("*".repeat(20));
for (int i = 0; i < lista.getListaDeProduto().size(); i++) {
mostra(lista.getListaDeProduto().get(i).toString());
}
mostra("*".repeat(20));
}
}
Código classe produto
package armazena;
public class Produto implements Comparable<Produto> {
//Onde fica armazenado as informações do produto
private String nome;
private double valor;
//Usado para definir as informações do produto no momento de sua criação
public Produto(String nome, double valor) {
this.nome = nome;
this.valor = valor;
}
//Método para usar as informações do produto
public String getNome() {
return nome;
}
public double getValor() {
return valor;
}
//Mudando o formato de exibição do produto
@Override
public String toString() {
return "Produto: " + nome + "\nPreço: " + valor;
}
//Como comparar o produto para ordenar em uma lista
@Override
public int compareTo(Produto outroProduto) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(outroProduto.valor));
}
}