top of page

Desafio Java com Array

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


CONTATO
REDES SOCIAIS

Distrito Agrícola de Ubu

Goiana - PE 55900-000

              

              81 9 9193-1883

  • Facebook ícone social
  • Instagram
  • X
  • YouTube
Whatsapp
nascimento networks symbol new_edited.pn
SCM - ISM
Nascimento Networks Empire

©2026 Nascimento Networks Technologies    CNPJ: 50.191.234/0001-31

Protegido com tecnologia desenvolvida 

em Israel.

bottom of page