我有一个方法处理一行,将第一个单词分成一个名为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]
我不确定为什么会出现这种行为,我想要一个解释和解决方案。
答案 0 :(得分:3)
由于某种原因,参数被包裹在方括号中。
这是因为您正在打印Vector
本身而不是Vector
的元素。因此,toString()
的{{1}}方法在以下行中调用:
Vector
将此行更改为:
System.out.println(" " + params);