import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Estoque estoque = new Estoque();
while (true) {
System.out.print("Digite a opção de acordo com o que deseja fazer!\n"
+ "1 --> Cadastrar fruta\n"
+ "2 --> Consultar frutas cadastradas\n"
+ "3 --> Encerrar\n");
int opcao = lerNumero(scanner);
if (opcao == 3) {
System.out.println("Encerrando...\n");
break;
} else if (opcao == 1) {
System.out.println("Informe o nome da fruta:");
String nomeFruta = scanner.nextLine().toUpperCase();
System.out.println("Informe a quantidade de frutas deste tipo:");
int qtdFruta = lerNumero(scanner);
estoque.adicionar(new Fruta(nomeFruta), qtdFruta);
System.out.println("\n");
} else if (opcao == 2) {
estoque.listar();
} else {
System.out.println("Opção Inválida!\n");
}
}
}
static int lerNumero(Scanner scanner) {
while (true) {
try {
return Integer.parseInt(scanner.nextLine());
} catch (NumberFormatException e) {
System.out.println("Você não digitou um número");
}
}
}
}
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class Estoque {
private Map<Fruta, Integer> frutas = new HashMap<>();
public void adicionar(Fruta fruta, int quantidade) {
// obtém a quantidade atual da fruta, ou zero se ainda não estiver no estoque
int qtdAtual = this.frutas.getOrDefault(fruta, 0);
// atualiza a quantidade
this.frutas.put(fruta, quantidade + qtdAtual);
}
public void listar() { // mostrar as frutas e respectivas quantidades
System.out.println("Frutas:");
for (Entry<Fruta, Integer> entry : this.frutas.entrySet()) {
System.out.printf(" - %s | %d\n", entry.getKey().getNome(), entry.getValue());
}
}
}
import java.util.ArrayList;
import java.util.Objects;
public class Fruta {
private String nome;
public Fruta(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
@Override
public int hashCode() {
return Objects.hash(this.nome);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof Fruta))
return false;
Fruta other = (Fruta) obj;
return this.nome.equals(other.nome);
}
}