gpt4 book ai didi

Java使用getter作为表达式跳过switch语句

转载 作者:行者123 更新时间:2023-12-04 12:53:32 24 4
gpt4 key购买 nike

嘿,抱歉,对于你们来说什么似乎是一个愚蠢的问题,但我已经被困在这个问题上一段时间了,我使用来自不同类的 getter 作为另一个类中的 switch 表达式,我的程序一直跳过整个 switch全部一起。
感谢您的时间!
头等舱


public class InputRequests {
public int loginRole;


public void loginChoice(){
Scanner login = new Scanner(System.in);
loginRole = login.nextInt();
}

public int getLoginRole() {
return loginRole;
}
}
二等舱
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);
}
}
}

主要的
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());
}
}
第一个菜单打印只是一个品脱,没有其他任何东西,
运行程序时,我确实得到了我输入的 int 值。

最佳答案

您的程序不会跳过 switch 语句。
查看 Menus.loginChoiceCase() 方法。它正在创建 InputRequests 的新实例。这意味着 inp.getLoginRole() 为空,并且您的 switch 语句没有捕获空值的默认情况。
在 switch 语句中添加一个 default case

default -> System.out.println("Null");
理想情况下,您想要做的是让 loginChoiceCase() 方法接受一个 int,然后在 case 语句中使用它。
有了 loginChoiceCase() 能够接受一个 int,你就可以使用你的 getter。像下面。
输入请求
public class InputRequests {
public int loginRole;


public void loginChoice(){
Scanner login = new Scanner(System.in);
loginRole = login.nextInt();
}

public int getLoginRole() {
return loginRole;
}
}
菜单
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");
}
}
}
主要的
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());
}
}

关于Java使用getter作为表达式跳过switch语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69319618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com