Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução

/**
 * João está desenvolvendo um sistema de segurança para uma empresa. Para acessar o sistema,
 * o usuário precisa fornecer:
 *
 * Um código de acesso numérico (o código correto é 2023).
 *
 * Um nível de permissão numérico (os níveis válidos são 1, 2 ou 3).
 *
 * O sistema só permitirá o acesso se:
 *
 * O código de acesso estiver correto.
 *
 * O nível de permissão for válido (1, 2 ou 3).
 *
 * Caso contrário, o acesso será negado, e o programa deve informar o motivo (código incorreto,
 * nível de permissão inválido ou ambos).
 *
 * Crie um programa que receba o código de acesso e o nível de permissão e exiba uma mensagem indicando
 * se o acesso foi permitido ou negado, além do motivo, se for o caso.
 */

package com.github.lucasdevrj.condicionais;

import java.util.Scanner;

public class VerificacaoCódigoAcessoNivelPermissao {
    public static void main(String[] args) {
        int codigoDeAcesso = 2023;
        int[] nivelDePermissao = {1, 2, 3};

        Scanner entrada = new Scanner(System.in);

        System.out.print("Digite o código de acesso: ");
        int codigoDeAcessoDigitado = entrada.nextInt();

        System.out.print("Digite o nível de permissão: ");
        int nivelDePermissaoDigitado = entrada.nextInt();

        entrada.close();

        boolean codigoDeAcessoValido = codigoDeAcesso == codigoDeAcessoDigitado;
        if (codigoDeAcessoValido) {
            boolean nivelDePermissaoValido = nivelDePermissaoDigitado == nivelDePermissao[0]
                    || nivelDePermissaoDigitado == nivelDePermissao[1]
                    || nivelDePermissaoDigitado == nivelDePermissao[2];
            if (nivelDePermissaoValido) {
                System.out.println("Acesso permitido.");
                System.out.println("Bem-vindo ao sistema!");
            } else {
                System.out.println("Acesso negado.");
                System.out.println("Nível de Permissão inválido.");
            }
        } else {
            System.out.println("Acesso negado.");
            System.out.println("Código de acesso inválido.");
        }
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Beleza?

1 resposta
solução!

Olá, Lucas! Tudo na paz por aqui.

Sua resolução está excelente! Você não apenas resolveu o problema lógico, mas estruturou o código de uma forma muito organizada e profissional. O uso de variáveis booleanas para armazenar os estados das validações (codigoDeAcessoValido e nivelDePermissaoValido) torna a leitura do código muito mais fluida.


Pontos de Destaque no seu Código:

  • Uso de Arrays: Utilizar um array para os níveis de permissão (int[] nivelDePermissao) é uma ótima prática de organização de dados.
  • Lógica de Curto-Circuito: Ao aninhar os if, você garante que o sistema só verifique o nível de permissão se o código de acesso já for válido. Isso economiza processamento e mantém a hierarquia da segurança.
  • Feedback Detalhado: O programa cumpre exatamente o requisito de informar o motivo do erro (código ou nível inválido), o que é essencial para o usuário final.

Uma Pequena Dica de Otimização:

Como os níveis de permissão são uma sequência simples (1, 2 ou 3), você poderia simplificar a validação do nível usando operadores relacionais para evitar o acesso direto a cada índice do array:

boolean nivelDePermissaoValido = nivelDePermissaoDigitado >= 1 && nivelDePermissaoDigitado <= 3;

Mas, da forma que você fez, acessando o array, o código fica super flexível caso os níveis mudassem para números não sequenciais (como 10, 25 e 30).


Parabéns pelo progresso!

Seu ambiente de desenvolvimento (IntelliJ) está muito bem configurado e os testes nos prints mostram que você cobriu todos os cenários possíveis de erro e sucesso.

Espero que possa ter lhe ajudado!

Uma pergunta para o próximo nível: Se você precisasse verificar se o código de acesso E o nível estão incorretos ao mesmo tempo (exibindo uma mensagem única para ambos), como você alteraria a estrutura desses if?