扫描仪用大括号包裹字符串

时间:2013-06-18 18:04:46

标签: java java.util.scanner

我有一个方法处理一行,将第一个单词分成一个名为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]

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

1 个答案:

答案 0 :(得分:3)

  

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

这是因为您正在打印Vector本身而不是Vector的元素。因此,toString()的{​​{1}}方法在以下行中调用:

Vector

将此行更改为:

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