灵活的开关案例语法

时间:2016-04-12 04:22:41

标签: java switch-statement

我的整个程序与命令提示符类似。目前,我正在编写一个函数,将用户输入的单词追加到特定文件中。用户必须遵循适当的语法。输入:

APP C Now

程序会将“Now”一词附加到文件C.

输入:

APP C She

程序会将单词“She”附加到文件C.

我有很多选择,我已经把它放到了switch语句中。例如:

case "ADD C":
case "DEL C":

包括上述两个在内的其他案例工作得非常好。我的问题是,我如何为这种格式制作一个开关盒?即“APP C word

2 个答案:

答案 0 :(得分:2)

您可以在输入字符串上使用.split(" ")将其拆分为字符串数组,其中数组中的每个元素都是原始字符串中的单词。换句话说

"ADD C She".split(" ") = {"ADD", "C", "She"}

一旦有了数组,就可以使用switch语句轻松检查元素1的命令名,文件名的元素2和参数的元素3。

答案 1 :(得分:1)

在实际情况下,通常最好使用查找表和多态而不是条件(ifswitch)。在这种情况下,它特别有用,你的不同命令可能会占用不同数量的参数,你甚至可能希望空格是重要的。

您可以为命令定义界面:

interface Command {
    void execute(String args);
}

然后在您的主要课程中,您将拥有Map<String, Command> commands。将输入拆分为两部分,然后将第二部分传递给命令:

String commandName = scanner.next();
String args = scanner.nextLine();
commands.get(commandName).execute(args);

这样做的好处是使你的循环比你试图处理所有内联案例简单得多。通过添加新命令(或现有命令的别名)以及更容易测试,它也更容易扩展,因为命令是自包含的并且可以独立验证。如果您有重复的行为,例如打开args中指定的文件,您甚至可以使用抽象类来共享该行为。