如何使用String中的参数调用函数?

时间:2017-02-02 10:12:22

标签: java

如果我有一个包含命令的String,我希望程序读取它并执行它所说的内容。

示例:

如果我有一个功能:

private void move(float position, float speed){
.....
}

String

String command = "MOVE 305 5"

其中“MOVE”调用move()函数,“305”是位置,“5”是速度。

所以,它应该是这样的:

move(305, 5);

如何使用此字符串调用函数?

2 个答案:

答案 0 :(得分:5)

如果所有命令的格式相同,则应该有一个switch语句,它将在您可能拥有的命令之间切换。这样,您将在需要时使用字符串中的args调用每个函数。

示例:

String[] parts = command.split(' ');
switch(parts[0])
{
    case "MOVE":
        float position = Float.parseFloat(parts[1])
        float speed = Float.parseFloat(parts[2])
        move(position, speed);
        break;

    case ... :

    ...

    default:
        System.out.println("Unknown command");
        break;

}

答案 1 :(得分:3)

您可以对不同的可能命令使用枚举,以及其他答案中已显示的开关案例。

枚举:

 public enum CommandType{

        MOVE, STOP;
 }

示例用法:

String[] splitted = command.split("\\s");

CommandType currentCommand = CommandType.valueOf(splitted[0]);


switch(currentCommand){

    case MOVE : 
        move(Float.parseFloat(splitted[1]),Float.parseFloat(splitted[2]));
        break;
    case STOP : 
        stop();
        break;
    default :
        break;
}