Inicialmente eu optei por adaptar o desafio para utilizar o HashMap
, que eu não tinha praticado ainda, entretanto, no decorrer da resolução identifiquei que na Classe HashMap
não há o metódo sort()
ou semelhante, impedindo a ordenação das compras por um critério específico, nesse caso do projeto o PREÇO.
Pesquisei e percebi que teria que converter o HashMap
para uma List
. Há alguma outra forma de resolver isso?
Segue a resolução para o restante das propostas:
package br.com.alura.screenmatch.atividadeslistas.capitulo5;
public class Cartao {
private String nome;
private String bandeira;
private double limite;
public String getNome() {
return nome;
}
public String getBandeira() {
return bandeira;
}
public double getLimite() {
return limite;
}
public Cartao(String nome, String bandeira, double limite) {
this.nome = nome;
this.bandeira = bandeira;
this.limite = limite;
}
@Override
public String toString() {
return "Nome do cartão:'" + nome + '\'' +
", Bandeira: '" + bandeira + '\'' +
", Limite: R$" + limite;
}
public boolean realizaCompra(double valorCompra){
if (this.limite >= valorCompra){
limite -= valorCompra;
System.out.println("Compra realizada! Valor atualizado do limite: R$ " + this.limite) ;
return true;
} else {
System.out.println("Saldo insuficiente! Valor do limite disponível: R$ " + this.limite);
return false;
}
}
}
package br.com.alura.screenmatch.atividadeslistas.capitulo5;
import java.util.*;
public class Principal5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//List<String> listaDeCompras = new ArrayList<>();
Map<String, Double> listaDeCompras = new HashMap<>();
int opcaoSelecionada = 0;
double valorTotal = 0;
System.out.println("Insira os dados do seu cartão (nome, bandeira, limite): ");
Cartao cartao1 = new Cartao(scanner.nextLine(), scanner.nextLine(), scanner.nextDouble());
while (opcaoSelecionada != 4){
System.out.println("""
Bem-vindo a sua carteira digital. Escolha uma opção:
1. Realizar compras
2. Visualizar cartão
3. Visualizar compras
4. Sair""");
opcaoSelecionada = scanner.nextInt();
scanner.nextLine();
switch (opcaoSelecionada){
case 1:
System.out.println("O que deseja comprar?");
String item = scanner.nextLine();
System.out.println("Qual o valor da compra?");
double valorCompra = scanner.nextDouble();
if (cartao1.realizaCompra(valorCompra)){
listaDeCompras.put(item, valorCompra);
valorTotal += valorCompra;
}
break;
case 2:
System.out.println(cartao1);
break;
case 3:
for (String chave : listaDeCompras.keySet()){
System.out.println("Descrição da compra: " + chave +
", Valor da compra: R$ "+ listaDeCompras.get(chave));
}
System.out.println("Valor total: R$ " + valorTotal);
break;
case 4:
System.out.println("Operação finalizada.");
break;
default:
System.out.println("Opção inválida! Tente novamente");
break;
}
}
}
}