在java程序中处理命令/输入解释的最有效方法是什么?

在java程序中处理命令/输入解释的最有效方法是什么?,java,input,Java,Input,为清晰起见,请编辑: 我想知道是否有更有效的方法: 存储可能的命令(例如具有某种类型的数据结构,其中充满了有效的命令) 对照存储的命令检查用户输入的命令,如果命令对齐,则执行相关方法 我发现这个问题很难回答,所以如果需要澄清,请告诉我 我正在尝试制作一个命令行日历,目前它接收了许多以“|”分隔的命令和参数,如下所示: 日历|添加|“EventNameString”|“EventDescriptionString”|“EventDate” 帮助 日历打印 日历|删除|“EventNameStrin

为清晰起见,请编辑:

我想知道是否有更有效的方法:

  • 存储可能的命令(例如具有某种类型的数据结构,其中充满了有效的命令)

  • 对照存储的命令检查用户输入的命令,如果命令对齐,则执行相关方法

  • 我发现这个问题很难回答,所以如果需要澄清,请告诉我

    我正在尝试制作一个命令行日历,目前它接收了许多以“|”分隔的命令和参数,如下所示:

    日历|添加|“EventNameString”|“EventDescriptionString”|“EventDate”
    帮助
    日历打印
    日历|删除|“EventNameString”|“EventDate”

    然后,我根据“|”分割输入。我想知道的是,解释成功命令的最佳方式是什么。目前,我正在使用一组if语句。例如,使用上面的第一个示例输入,它将检查第一个参数是否与“calendar”匹配,如果匹配,它将检查第二个命令是否为“add”、“print”等

    我在想,可能有某种方法可以将可接受的命令列表存储在某种数据结构中,然后使用数据结构以最佳方式检查输入是否与有效命令匹配(如果匹配,则执行命令)

    下面是我解释命令的代码。如果需要,我可以展示或解释更多:

    public StatusMessage parseCommand(String command) {
        String[] command_args = command.split("\\|");
        if(command_args.length == 0)
            return noInputFailure;
        if(command_args[0].toLowerCase().equals("help")) {
            System.out.println("USAGE");
            System.out.println("App: calendar");
            System.out.println("");
        }
        else if(command_args[0].toLowerCase().equals("calendar")) {
    
            String input_arg1 = command_args[1].toLowerCase();
            if(input_arg1.equals("add")) {
                DateFormat date_format = new SimpleDateFormat("mm/dd/yyyy");
                Date date = null;
                try {
                    date = (Date)date_format.parse(command_args[4]);
                } catch (ParseException e) {
                    return dateFormatFailure;
                }
                calendar.addEvent(command_args[2], command_args[3], date);
                return genericSuccess;
            }
            if(input_arg1.equals("print")) {
                calendar.print();
                return genericSuccess;
            }
    
        }
    
        return genericFailure;
    }
    

    你能给我们看一些你目前正在做的事情的代码吗?这将使建议合理的更改变得更容易。添加了一些!让我知道如果你需要更多的上下文或任何东西。考虑使用一个开关语句更清晰的代码,如问题已经关闭,所以我不能张贴答案。我想说,看看命令设计模式,它可以用任何语言(包括Java)实现。维基百科文章()是一个很好的起点。想象一下,将命令实例存储在一个
    映射中
    ,命令名(“help”、“calendar”)作为选择命令的键,您就会明白我的建议。很抱歉,问题已经结束。任何关于什么是最好的方法的问题都将以基于意见的方式结束,并且过于广泛,可能还有一些其他原因。您能为我们展示一些您当前正在做的事情的代码吗?这将使建议合理的更改变得更容易。添加了一些!让我知道如果你需要更多的上下文或任何东西。考虑使用一个开关语句更清晰的代码,如问题已经关闭,所以我不能张贴答案。我想说,看看命令设计模式,它可以用任何语言(包括Java)实现。维基百科文章()是一个很好的起点。想象一下,将命令实例存储在一个
    映射中
    ,命令名(“help”、“calendar”)作为选择命令的键,您就会明白我的建议。抱歉,问题结束了。任何关于什么是最好的方式的问题都将以基于意见的、过于广泛的方式结束,可能还有一些其他原因。