Hola Rafael, espero que estés bien
He revisado tu código y parece que hay un pequeño error en la lógica de las condiciones que verifica el nivel de validación. Vamos a corregirlo juntos.
El problema principal está en cómo se evalúan las condiciones del nivel de validación. Actualmente, el código está permitiendo el acceso siempre que el nivel de validación sea 1, 2 o 3, independientemente de si el código de acceso es correcto o no. Además, la lógica para verificar si el nivel de validación es incorrecto también tiene un error. Vamos a ajustar eso.
Aquí tienes una versión corregida del código:
import java.util.Scanner;
public class Seguridad {
public static void main(String[] args) {
int codigoAcceso = 2023;
Scanner teclado = new Scanner(System.in);
System.out.println("Inicio del sistema\n");
System.out.println("Ingrese el codigo de acceso: ");
int codigo = teclado.nextInt();
System.out.println("Ingrese su nivel de validacion: ");
int validacion = teclado.nextInt();
if (codigoAcceso == codigo && (validacion == 1 || validacion == 2 || validacion == 3)) {
System.out.println("Acceso permitido. ¡Bienvenido al sistema!");
} else {
if (codigoAcceso != codigo) {
System.out.println("Su codigo de acceso " + codigo + " es incorrecto");
}
if (validacion != 1 && validacion != 2 && validacion != 3) {
System.out.println("Hubo un error al ingresar el numero de validacion, numero " + validacion + " incorrecto");
}
}
}
}
He realizado los siguientes cambios:
He corregido la condición if
para verificar tanto el código de acceso como el nivel de validación de manera conjunta usando &&
para asegurar que ambas condiciones sean verdaderas para permitir el acceso.
He ajustado la lógica dentro del else
para verificar de manera independiente si el código de acceso o el nivel de validación son incorrectos, y así poder mostrar el mensaje apropiado.
Espero que esta solución te sea útil y te ayude a entender mejor cómo manejar las condiciones. ¡Bons estudos!