【问题标题】:How to separate parameters from a command in Java?如何在Java中将参数与命令分开?
【发布时间】:2019-06-16 02:18:27
【问题描述】:

我正在用 Java 编写一个地址簿程序。用户将输入诸如 add-addressbook 之类的命令。我遇到的主要问题是知道输入了哪个命令并从命令中获取参数并将它们放入方法中。并非所有命令都具有相同数量的参数。命令和参数之间有一个空格。参数用一个逗号分隔。当用户正确输入所有内容但否则返回错误时,此代码有效。有没有更好的方法来做到这一点?

while (!input.equals("quit")) {
            String[] data = input.split(" ", 2);
            ArrayList<String> listofdata = new ArrayList<String>(Arrays.asList(data[1].split(",")));
            switch (data[0]) {
            case "add-addressbook":
                String nameofBook = listofdata.get(0);
                c.addBook(nameofBook);
                break;
             case "add-contact":
                String nameofBook2 = listofdata.get(0);
                String nameofContact = listofdata.get(1);
                String email = listofdata.get(2);
                String phone = listofdata.get(3);
                c.addPerson(nameofBook2, nameofContact, email, phone);
                break;
             //rest of code
             }

【问题讨论】:

  • 澄清一下,预期用法类似于add-contact book1,First Last,name@blah.com,123-456-7890?
  • @AndrewFan 是的。需要某种格式,我在另一个类中使用正则表达式指定了该格式,并在用户以另一种格式输入详细信息时提供适当的错误消息(在这种情况下,您输入的电话号码不起作用,但这与我的问题无关紧要)
  • @jaco0646 - 这个问题似乎与命令行参数无关。

标签: java


【解决方案1】:

您最好使用接受StringList&lt;String&gt; 的方法创建一个通用接口Command。每个命令都有几个单独的实现。

然后每个具体实现将解析其参数并对其进行处理或抛出异常(或返回 falseString 并带有错误消息)。

【讨论】:

  • 感谢您的回复!您能否链接到正在使用的示例?
  • @RakoonBerry 这是维基百科的链接en.wikipedia.org/wiki/Command_pattern#Java,但如果需要,您可以轻松地在 Google 上搜索更多代码示例
  • 非常感谢。我刚开始编程,因此感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2020-01-22
  • 2011-07-05
  • 2010-09-26
相关资源
最近更新 更多