Hola Anthony, espero que estés bien
He revisado tu código y parece que hay un pequeño error en la lógica de la condición if
que verifica el acceso. Actualmente, tu condición permite el acceso si el código de acceso es correcto y cualquiera de los niveles de permiso es válido, pero también permite el acceso si el código de acceso es incorrecto y el nivel de permiso es válido.
Para corregir esto, debes asegurarte de que ambas condiciones, el código de acceso y el nivel de permiso, sean correctas al mismo tiempo. Aquí te dejo una versión alternativa de tu código:
import java.util.Scanner;
public class CodigosDePractica {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int codigoDeAcceso = 2023;
int nivelDePermiso1 = 1;
int nivelDePermiso2 = 2;
int nivelDePermiso3 = 3;
System.out.print("Ingrese el código de acceso: ");
int codigoUsuario = scanner.nextInt();
System.out.print("Ingrese el nivel de permiso: ");
int permisoUsuario = scanner.nextInt();
if (codigoUsuario == codigoDeAcceso &&
(permisoUsuario == nivelDePermiso1 || permisoUsuario == nivelDePermiso2 || permisoUsuario == nivelDePermiso3)) {
System.out.println("Acceso permitido. ¡Bienvenido al sistema!");
} else {
System.out.println("¡Acceso denegado!");
if (codigoUsuario != codigoDeAcceso) {
System.out.println("Código de acceso incorrecto.");
}
if (permisoUsuario != nivelDePermiso1 && permisoUsuario != nivelDePermiso2 && permisoUsuario != nivelDePermiso3) {
System.out.println("Su nivel de permiso es insuficiente para acceder al sistema.");
}
}
}
}
Con esta modificación, el programa solo permitirá el acceso si tanto el código de acceso como el nivel de permiso son correctos. Además, te dará un mensaje claro sobre cuál fue el error si el acceso es denegado.
Espero haber ayudado y buenos estudios!