在java程序中处理命令/输入解释的最有效方法是什么?
为清晰起见,请编辑: 我想知道是否有更有效的方法:在java程序中处理命令/输入解释的最有效方法是什么?,java,input,Java,Input,为清晰起见,请编辑: 我想知道是否有更有效的方法: 存储可能的命令(例如具有某种类型的数据结构,其中充满了有效的命令) 对照存储的命令检查用户输入的命令,如果命令对齐,则执行相关方法 我发现这个问题很难回答,所以如果需要澄清,请告诉我 我正在尝试制作一个命令行日历,目前它接收了许多以“|”分隔的命令和参数,如下所示: 日历|添加|“EventNameString”|“EventDescriptionString”|“EventDate” 帮助 日历打印 日历|删除|“EventNameStrin
帮助
日历打印
日历|删除|“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”)作为选择命令的键,您就会明白我的建议。抱歉,问题结束了。任何关于什么是最好的方式的问题都将以基于意见的、过于广泛的方式结束,可能还有一些其他原因。