0

我有一个方法,它处理一行来分隔它放入一个名为 cmd 的字符串中的第一个单词,其余的它输入到参数的字符串向量中,然后将它们发送到一个函数来处理命令。由于某种原因,参数被包裹在方括号中。

static private boolean processLine(String line) {
            if (debug) System.out.println("DEBUG: processLine \"" + line + "\"");    

            line = new String(line.trim());
            String cmd = new String();
            Vector<String> params = new Vector<String>(3);
            boolean hasparam = false;
            Scanner s = new Scanner(line).useDelimiter(" ");
            int x = 0;
            while (s.hasNext()) {
                    if (x == 0) { cmd = s.next(); }
                    else if (x >= 1) {
                            params.add(s.next());
                            hasparam = true;
                    }
                    x++;
            }

            // Next we process the command.
            processCmd(cmd, params);

            return exit;
    }

static private void processCmd(String cmd, Vector<String> params) {
            boolean invalid = false;

            if (debug) {
                    System.out.print("DEBUG: processCmd " + cmd);
                    if (params.size() == 0) System.out.println();
                    else for (String param : params) 
                           System.out.println(" " + params);
            }

输出:

> add hosting
DEBUG: processLine "add hosting"
DEBUG: processCmd add [hosting]

我不确定为什么会出现这种行为,我想要一个解释和一个解决方案。

4

1 回答 1

3

由于某种原因,参数被包裹在方括号中。

这是因为您正在打印Vector本身而不是Vector. 所以toString()方法Vector在以下行中调用:

System.out.println(" " + params);

将此行更改为:

System.out.println(" " + param);
于 2013-06-18T18:09:31.000 回答