我正在尝试创建一种将某些输入转换为编号输出的方法。
我正在尝试创建一个方法,我称之为枚举。看起来像这样:
public static int enumerate(String user_input){
int output = 0;
if (user_input.equals("l")){
output = 1;
}
else if (user_input.equals("r")){
output = 2;
}
else if (user_input.equals("d")){
output = 3;
}
else if (user_input.equals("a")){
output = 4;
}
else if (user_input.equals("q")){
output = 5;
}
return output;
}
然后我尝试创建一个如下所示的开关:
switch(enumerate(user_input)){
//moving left
case 1:
sharedData.setOffset(sharedData.getOffset() - 1);
//moving right
case 2:
sharedData.setOffset(sharedData.getOffset() + 1);
//moving all the way right
case 3:
sharedData.setOffset(74);
//moving all the way left
case 4:
sharedData.setOffset(-73);
//quitting
case 5:
running = false;
应该根据 user_input 中的内容更改某些变量。 但是,每次我运行此开关时,它都会表现得好像
case 5
始终为真,即使它不应该为真。
另外,如果有帮助的话,当我尝试检查使用调试终端运行 enumerate("l")
会发生什么(我正在 VsCode 中工作)时,它运行了一个错误,提示 Cannot evaluate because of compilation error(s): The method enumerate(Thread[]) in the type Thread is not applicable for the arguments (String).
,这很奇怪,因为枚举应该采用字符串的参数。
任何帮助都会很棒,只是想解决这个问题。
像这样尝试一下。
You need to put break statements after each case. Otherwise, it is falling thru to the last one.
开关(枚举(用户输入)){ //向左移动 情况1: SharedData.setOffset(sharedData.getOffset() - 1); 休息; //向右移动 案例2: SharedData.setOffset(sharedData.getOffset() + 1); 休息; //一直向右移动 案例3: 共享数据.setOffset(74); 休息; //一直向左移动 案例4: 共享数据.setOffset(-73); 休息; //退出 案例5: 运行=假; }