Hola, lo siento por el qué para ustedes debe parecer una pregunta estúpida, pero he estado atascado en esto por un tiempo, estoy usando un getter de una clase diferente como la expresión de cambio en otra clase, mi programa sigue omitiendo todo el cambio todos juntos.
¡Gracias por tu tiempo!
Primera clase
public class InputRequests { public int loginRole; public void loginChoice(){ Scanner login = new Scanner(System.in); loginRole = login.nextInt(); } public int getLoginRole() { return loginRole; } }Segunda clase
public class Menus { public void loginChoiceCase() { InputRequests inp = new InputRequests(); switch (inp.getLoginRole()) { case 1 -> System.out.println("test"); case 2 -> System.out.println("tested"); case 3 -> System.exit(1); } } }principal
public class Main { public static void main(String[] args) { Printblocks print = new Printblocks(); InputRequests input = new InputRequests(); Menus menu = new Menus(); print.firstMenu(); input.loginChoice(); menu.loginChoiceCase(); System.out.println(input.getLoginRole()); } }La primera impresión del menú es solo un pintblock sin nada más, cuando ejecuto el programa obtengo el int que ingreso de nuevo.
Su programa no se salta la declaración de cambio. Mire el método Menus.loginChoiceCase(). Está creando una nueva instancia de InputRequests. Lo que significa que inp.getLoginRole() es nulo, y su declaración de cambio no tiene un caso predeterminado para detectar nulos.
Agregue un caso predeterminado a la declaración de cambio
default -> System.out.println("Null");Idealmente, lo que querría hacer es que su método loginChoiceCase() tome un int y luego lo use en su declaración de caso. Con loginChoiceCase() capaz de tomar un int, luego puede usar su getter. Como abajo.
Solicitudes de entrada
public class InputRequests { public int loginRole; public void loginChoice(){ Scanner login = new Scanner(System.in); loginRole = login.nextInt(); } public int getLoginRole() { return loginRole; } }Menús
public class Menus { public void loginChoiceCase(int choice) { switch (choice) { case 1 : System.out.println("test"); case 2 : System.out.println("tested"); case 3 : System.exit(1); default : System.out.println("Null"); } } }Principal
public class Main { public static void main(String[] args) { Printblocks print = new Printblocks(); InputRequests input = new InputRequests(); Menus menu = new Menus(); print.firstMenu(); menu.loginChoiceCase(input.getLoginRole); System.out.println(input.getLoginRole()); } }Debe eliminar esta línea porque este es un objeto diferente del que declaró en el método main
public class Menus { public void loginChoiceCase() { InputRequests inp = new InputRequests(); <--- delete this line switch (inp.getLoginRole()) { case 1 -> System.out.println("test"); case 2 -> System.out.println("tested"); case 3 -> System.exit(1); } } }Explicación: ¿Por qué sucedió esto?
Porque el objeto que declaró en el método loginChoiceCase no almacenó el valor de la consola de usuario y el valor de loginRole es el valor predeterminado que es cero y no tiene un menú con cero mayúsculas y minúsculas.