将输入转换为数字的方法不起作用

问题描述 投票:0回答:1

我正在尝试创建一种将某些输入转换为编号输出的方法。

我正在尝试创建一个方法,我称之为枚举。看起来像这样:

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).
,这很奇怪,因为枚举应该采用字符串的参数。 任何帮助都会很棒,只是想解决这个问题。

java switch-statement
1个回答
0
投票

像这样尝试一下。

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: 运行=假; }

© www.soinside.com 2019 - 2024. All rights reserved.