Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Verificación de código de acceso y nivel de permiso

public class Principal {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int codigoDeAcceso = 2023;

        System.out.println("Ingrese el código de acceso:");
        int codigo = sc.nextInt();

        System.out.println("Ingrese el nivel de permiso:");
        int nivel = sc.nextInt();

        if (codigo == codigoDeAcceso && nivel == 1 || nivel == 2 || nivel == 3)
        {
            System.out.println("Acceso permitido. ¡Bienvenido al sistema!");
        } else if (codigo != codigoDeAcceso && nivel != 1 && nivel != 2 && nivel != 3) {
            System.out.println("Acceso NO permitido, código de acceso y nivel de permiso incorrectos");
        }
        else if (codigo != codigoDeAcceso){
            System.out.println("Acceso NO permitido, código de acceso incorrecto");
        } else {
            System.out.println("Acceso NO permitido, nivel de permiso incorrecto");
        }
    }
}
1 respuesta

Hola Leydi, espero que estés bien

Parece que estás trabajando en un sistema de verificación de acceso y tienes un pequeño problema con las condiciones en tu código. Vamos a revisarlo juntos.

El problema principal está en la forma en que se evalúan las condiciones en la sentencia if. Actualmente, tu condición:

if (codigo == codigoDeAcceso && nivel == 1 || nivel == 2 || nivel == 3)

se evalúa de manera que el operador || tiene menor precedencia que el operador &&, lo que significa que se está evaluando como:

if ((codigo == codigoDeAcceso && nivel == 1) || nivel == 2 || nivel == 3)

Esto permite el acceso incluso si el codigo es incorrecto, siempre que el nivel sea 2 o 3. Para corregir esto, necesitas agrupar las condiciones del nivel de permiso usando paréntesis:

if (codigo == codigoDeAcceso && (nivel == 1 || nivel == 2 || nivel == 3))

Con este cambio, el acceso solo será permitido si el codigo es correcto y el nivel es uno de los valores válidos (1, 2 o 3).

Espero que esto solucione el problema. ¡Espero haber ayudado y buenos estudios!