A tener en cuenta:
- Me apoyo de Integer.parseInt(String value) para pasar un String a entero.
- Me apoyo del catch para controlar la excepción NumberFormatException que arroja parseInt.
import java.util.Scanner;
public class AccessControl {
public static void main(String[] args) {
String DEFAULT_CODE = "2023";
Scanner scanner = new Scanner(System.in);
String accessCode;
String permissionLevel;
showHeader();
System.out.print("* Ingrese el código de acceso: ");
accessCode = scanner.next();
System.out.print("* Ingrese el nivel de permiso: ");
permissionLevel = scanner.next();
processData(DEFAULT_CODE, accessCode, permissionLevel);
System.out.println("Closing app... Thanks for using our service");
scanner.close();
}
private static void processData(String defaultCode, String userCode, String permissionLevel) {
String motivo = "";
if (!defaultCode.equals(userCode)) {
motivo = motivo.concat("Código incorrecto.");
}
try {
int level = Integer.parseInt(permissionLevel);
if (level > 3 || level < 1) {
motivo = motivo.concat(" Nivel de permiso inválido.");
}
} catch (NumberFormatException _) {
motivo = motivo.concat(" Nivel de permiso inválido.");
}
if (motivo.isEmpty()) System.out.println("\nAcceso permitido. ¡Bienvenido al sistema!\n");
else System.out.printf("""
Acceso no permitido.
%s
""", motivo.trim());
}
private static void showHeader() {
System.out.print("""
************************************
Welcome to access control app
************************************
""");
}
}