字符串错误地拆分

时间:2013-03-13 05:28:37

标签: java split

我正在尝试使用split(“#”)打印出字符串的元素,#是分隔元素的字符。我的代码如下(电影是正在打印的字符串):

String[] tokens = movies.split("#");
for (int i = 0; i < tokens.length; i++){
    System.out.println(tokens[i]); 
}

这是电影的内容:

1 Skyfall#2 The Impossible#

这是打印的内容:

1 Skyfall
2 The Impossible
2

如果我修改上面的代码,所以它循环(tokens.length - 1)次而不是tokens.length,这是打印的:

1 Skyfall
2

这是使字符串存储在电影中的方法。这使用LinkedList。在这种情况下,lineNumbers为true。 numItems是Listnode&lt;串GT;链接列表中的(也就是电影)。

String list = "";
int pos = 0;
ListNode node = head;
if (numItems == 0){
    return "Empty";
}
while (pos < numItems){
    if (lineNumbers){
        list += (pos + 1) + " ";
    }
    list += node.getData() + "#";  
    pos++;
    if (pos < numItems){
        node = node.getNext();
    }
}  
return list;

我无法弄清楚为什么打印这个额外的号码。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您尚未发布完整代码,因此很难准确。但你的分裂很好。

我打赌问题是因为lineNumberspos

之间的不匹配

答案 1 :(得分:1)

在此代码中

 list += (pos + 1) + " ";

被执行两次。请检查你的条件是否有麻布。这应该是假的。

在判断pos ++后执行第二个条件

if (pos < numItems){

不满意而且中断了。

所以最终你有

1 Skyfall#2 The Impossible#2#