Desafio Java com Array
- Nascimento Networks
- 22 de fev. de 2024
- 4 min de leitura
Crie um programa em Java para gerenciar o estoque de uma farmácia. Utilize arrays para armazenar os nomes dos medicamentos e suas quantidades em estoque. O programa deve oferecer as seguintes opções:
Adicionar Medicamento: Permite ao usuário adicionar um novo medicamento ao estoque, inserindo o nome e a quantidade.
Consultar Estoque: Permite ao usuário verificar a quantidade em estoque de um medicamento específico, inserindo o nome do medicamento.
Sair: Encerra o programa.
Lembre-se de utilizar um loop para manter o programa em execução até que o usuário escolha a opção de sair. Certifique-se de lidar com situações como inventário cheio e medicamento não encontrado.
Aqui está um exemplo de como você pode implementar esse programa em Java:
import java.util.Scanner;
public class Farmacia {
private static final int CAPACIDADE_ESTOQUE = 100;
private static String[] medicamentos = new String[CAPACIDADE_ESTOQUE];
private static int[] quantidades = new int[CAPACIDADE_ESTOQUE];
private static int totalMedicamentos = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int opcao;
do {
exibirMenu();
opcao = scanner.nextInt();
scanner.nextLine(); // Limpar o buffer do scanner
switch (opcao) {
case 1:
adicionarMedicamento(scanner);
break;
case 2:
consultarEstoque(scanner);
break;
case 3:
System.out.println("Encerrando o programa...");
break;
default:
System.out.println("Opção inválida! Tente novamente.");
}
} while (opcao != 3);
scanner.close();
}
private static void exibirMenu() {
System.out.println("\n===== MENU =====");
System.out.println("1. Adicionar Medicamento");
System.out.println("2. Consultar Estoque");
System.out.println("3. Sair");
System.out.print("Escolha uma opção: ");
}
private static void adicionarMedicamento(Scanner scanner) {
if (totalMedicamentos == CAPACIDADE_ESTOQUE) {
System.out.println("Inventário cheio! Não é possível adicionar mais medicamentos.");
return;
}
System.out.print("Digite o nome do medicamento: ");
String nome = scanner.nextLine();
System.out.print("Digite a quantidade em estoque: ");
int quantidade = scanner.nextInt();
medicamentos[totalMedicamentos] = nome;
quantidades[totalMedicamentos] = quantidade;
totalMedicamentos++;
System.out.println("Medicamento adicionado com sucesso!");
}
private static void consultarEstoque(Scanner scanner) {
System.out.print("Digite o nome do medicamento: ");
String nome = scanner.nextLine();
int indice = encontrarMedicamento(nome);
if (indice != -1) {
System.out.println("Quantidade em estoque de " + nome + ": " + quantidades[indice]);
} else {
System.out.println("Medicamento não encontrado no estoque.");
}
}
private static int encontrarMedicamento(String nome) {
for (int i = 0; i < totalMedicamentos; i++) {
if (medicamentos[i].equalsIgnoreCase(nome)) {
return i;
}
}
return -1;
}
}
Este é um programa simples que permite ao usuário adicionar medicamentos ao estoque, consultar a quantidade em estoque de um medicamento específico e sair do programa. Ele utiliza arrays para armazenar os nomes dos medicamentos e suas quantidades em estoque. O programa continua em execução até que o usuário escolha a opção de sair.
Explicação passo à passo:
import java.util.Scanner;Esta linha importa a classe Scanner do pacote java.util, que será usada para obter entrada do usuário a partir do console.
public class Farmacia {Esta linha declara a classe Farmacia, que é a classe principal do programa.
private static final int CAPACIDADE_ESTOQUE = 100;
private static String[] medicamentos = new String[CAPACIDADE_ESTOQUE];
private static int[] quantidades = new int[CAPACIDADE_ESTOQUE];
private static int totalMedicamentos = 0;
Estas linhas declaram variáveis de classe para armazenar informações sobre o estoque da farmácia. CAPACIDADE_ESTOQUE define o tamanho máximo do estoque. medicamentos é um array de strings que armazena os nomes dos medicamentos. quantidades é um array de inteiros que armazena as quantidades dos medicamentos correspondentes. totalMedicamentos mantém o controle do número total de medicamentos atualmente no estoque.
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Esta linha declara o método main, que é o ponto de entrada do programa. Cria também um objeto Scanner chamado scanner para ler a entrada do usuário a partir do console.
int opcao;
do {
exibirMenu();
opcao = scanner.nextInt();
scanner.nextLine(); // Limpar o buffer do scanner
Estas linhas iniciam um loop do-while que continuará até que o usuário escolha a opção de sair (opcao == 3). Dentro do loop, o menu é exibido e o usuário é solicitado a escolher uma opção. A entrada do usuário é lida como um número inteiro usando scanner.nextInt(), e scanner.nextLine() é chamado para limpar o buffer do scanner.
switch (opcao) {
case 1:
adicionarMedicamento(scanner);
break;
case 2:
consultarEstoque(scanner);
break;
case 3:
System.out.println("Encerrando o programa...");
break;
default:
System.out.println("Opção inválida! Tente novamente.");
}
Este bloco switch verifica a opção selecionada pelo usuário e chama o método correspondente (adicionarMedicamento, consultarEstoque) ou exibe uma mensagem de erro se a opção for inválida.
} while (opcao != 3);
Esta linha fecha o loop do-while, o que significa que o programa continuará a ser executado até que o usuário escolha a opção de sair (opcao == 3).
scanner.close();
Esta linha fecha o objeto Scanner, liberando os recursos associados a ele.
private static void exibirMenu() {
System.out.println("\n===== MENU =====");
System.out.println("1. Adicionar Medicamento");
System.out.println("2. Consultar Estoque");
System.out.println("3. Sair");
System.out.print("Escolha uma opção: ");
}
Este método estático exibirMenu() imprime o menu para o usuário.
private static void adicionarMedicamento(Scanner scanner) {
if (totalMedicamentos == CAPACIDADE_ESTOQUE) {
System.out.println("Inventário cheio! Não é possível adicionar mais medicamentos.");
return;
}
Este método estático adicionarMedicamento() permite ao usuário adicionar um novo medicamento ao estoque. Verifica se o inventário está cheio antes de permitir a adição de um novo medicamento.
System.out.print("Digite o nome do medicamento: ");
String nome = scanner.nextLine();
System.out.print("Digite a quantidade em estoque: ");
int quantidade = scanner.nextInt();
Estas linhas solicitam ao usuário que insira o nome e a quantidade do medicamento a ser adicionado
medicamentos[totalMedicamentos] = nome;
quantidades[totalMedicamentos] = quantidade;
totalMedicamentos++;
Estas linhas adicionam o novo medicamento ao array medicamentos, sua quantidade correspondente ao array quantidades, e incrementam o contador totalMedicamentos.
System.out.println("Medicamento adicionado com sucesso!");
}
Esta linha imprime uma mensagem confirmando que o medicamento foi adicionado com sucesso.
private static void consultarEstoque(Scanner scanner) {
System.out.print("Digite o nome do medicamento: ");
String nome = scanner.nextLine();
int indice = encontrarMedicamento(nome);
if (indice != -1) {
System.out.println("Quantidade em estoque de " + nome + ": " + quantidades[indice]);
} else {
System.out.println("Medicamento não encontrado no estoque.");
}
}
Este método estático consultarEstoque() permite ao usuário verificar a quantidade em estoque de um medicamento específico. Primeiro, solicita ao usuário que insira o nome do medicamento a ser consultado. Em seguida, verifica se o medicamento está no estoque usando o método encontrarMedicamento(). Se o medicamento for encontrado, imprime a quantidade correspondente; caso contrário, exibe uma mensagem informando que o medicamento não foi encontrado.
private static int encontrarMedicamento(String nome) {
for (int i = 0; i < totalMedicamentos; i++) {
if (medicamentos[i].equalsIgnoreCase(nome)) {
return i;
}
}
return -1;
}
Este método estático encontrarMedicamento() busca o índice do medicamento no array medicamentos com base no nome fornecido. Retorna o índice se o medicamento for encontrado ou -1 caso contrário. Ele itera através dos medicamentos no estoque e compara seus nomes (ignorando diferenças de maiúsculas e minúsculas) com o nome fornecido.




Comentários