解析许多命令的最聪明方法



对于作业,我需要创建一个可以使用简单功能的基本处理器

作为输入,我必须使用文本文件,解析20个不同的命令然后执行它们。

我的问题是如何最好地解析字符串,与相应的命令匹配然后执行它们?

例如,我可以逐行解析文件,令牌字符串,通过包含所有命令的大量if-else语句发送令牌,然后通过为每个命令创建一个类(事先(来调用命令,然后执行该类。

,但我认为这不是最好的方法。有什么更好的方法还是我可以在示例中改进一些东西?

将命令作为接口,并将其映射到 String

interface Command{
    void execute();
}
Map<String, Command> map = new HashMap<>();

下一个映射您命令的所有实现:

map.put("ADD", () -> System.out.println("Calling Add"));

然后,一旦您将行进行标记,只需搜索地图并执行命令,不要忘记检查命令是否存在。

for (String token : tokens){
      map.getOrDefault(token, () -> System.out.println("Command " + token + " not found")).execute();
}

基于您在后续评论中所述的格式,我将使用Scanner类读取Whitespace界定的每一行,因为这是您的文本输入中的分离器。p>从那里,您可以使用开关语句根据您从文本输入中提取的字符串来决定要执行的操作。由于您必须为每个命令编写逻辑,因此,Switch语句看起来比Else Nightmare

更清洁。

编辑:

我还将澄清如何进一步执行此操作:

Scanner reader = new Scanner(new File("ints.txt"));
while (reader.hasNext()){
    Scanner parser = new Scanner(reader.nextLine());
    parser.useDelimiter(" ");
    //access each piece of the command by using parser.next();
}

最新更新