Prévia do material em texto
package Avaliacao;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Moeda {
private String nomeMoeda;
private double valor;
private double taxaCambioParaReal; // Taxa de câmbio para Real (BRL)
public Moeda(String nomeMoeda, double valor, double taxaCambioParaReal) {
this.nomeMoeda = nomeMoeda;
this.valor = valor;
this.taxaCambioParaReal = taxaCambioParaReal;
if ("Real".equalsIgnoreCase(nomeMoeda)) {
this.taxaCambioParaReal = 1.0; // Taxa de câmbio fixa para Real
} else {
this.taxaCambioParaReal = taxaCambioParaReal; // Usa a taxa fornecida pelo usuário
}
}
public String getNomeMoeda() {
return nomeMoeda;
}
public double getValor() {
return valor;
}
public double getTaxaCambioParaReal() {
return taxaCambioParaReal;
}
@Override //sobrescreve o metodo para represetar a moeda com o valor real
public String toString() {
return String.format("%s: %s (%.2f BRL)", nomeMoeda, valor, valor * taxaCambioParaReal);
}
}
// classe cofrinho separada da moeda, responsabilidade unica
public class Cofrinho {
private List<Moeda> moedas;
public Cofrinho() {
this.moedas = new ArrayList<>();
}
public void adicionarMoeda(Moeda moeda) {
moedas.add(moeda);
System.out.println("Moeda adicionada: " + moeda);
}
public void removerMoeda(int indice) {
//faz a verificação para remoção de moedas dentro do array
if (indice >= 0 && indice < moedas.size()) {
Moeda removida = moedas.remove(indice);
System.out.println("Moeda removida: " + removida);
} else {
System.out.println("Índice inválido.");
}
}
// verifica se o cofrinho está com moedas
public void listarMoedas() {
if (moedas.isEmpty()) {
System.out.println("O cofrinho está vazio.");
} else {
System.out.println("Moedas no cofrinho:");
for (int i = 0; i < moedas.size(); i++) {
System.out.println(i + ": " + moedas.get(i)); // impressao de indice e detalhes da moeda
}
}
}
//converte
public double calcularTotalEmReal() {
double total = 0;
for (Moeda moeda : moedas) {
total += moeda.getValor() * moeda.getTaxaCambioParaReal();
}
return total;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Cofrinho cofrinho = new Cofrinho(); // inicia execução programa
while (true) { //inicia menu principal
System.out.println("--- Menu do Cofrinho ---");
System.out.println("1. Adicionar moeda");
System.out.println("2. Remover moeda");
System.out.println("3. Listar moedas");
System.out.println("4. Calcular total em Real");
System.out.println("5. Sair");
System.out.print("Escolha uma opção: ");
int opcao = scanner.nextInt();
scanner.nextLine(); // Limpar o buffer
switch (opcao) {// usa switch para deixar o codigo enxuto e poder testas as opções do menu "juntas"
case 1: // adociona moeda conforme digitado pelo usuario
System.out.print("Nome da moeda: ");
String nomeMoeda = scanner.nextLine();
System.out.print("Valor da moeda: ");
double valor = scanner.nextDouble();
System.out.print("Taxa de câmbio para Real (BRL): ");
double taxaCambio = scanner.nextDouble();
Moeda novaMoeda = new Moeda( nomeMoeda, valor, taxaCambio);
cofrinho.adicionarMoeda(novaMoeda);
break;
case 2:
cofrinho.listarMoedas(); //remove moeda conforme o indice
System.out.print("Digite o índice da moeda a ser removida: ");
int indice = scanner.nextInt();
cofrinho.removerMoeda(indice);
break;
case 3:
cofrinho.listarMoedas(); //lista as moedas
break;
case 4: // total em real no cofrinho
double total = cofrinho.calcularTotalEmReal();
System.out.printf("Total no cofrinho: %.2f BRL%n", total); //formatação para aparecer a moeda
break;
case 5:
System.out.println("Saindo do programa...");
scanner.close();
return;
default:
System.out.println("Opção inválida. Tente novamente.");
}
}
}
}