2013-03-13 73 views
-1

我试图用分隔符(“#”)打印出一个字符串的元素,其中#是分隔元素的字符。我的代码如下(电影是正在打印的字符串):字符串错误地分割

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

这里是电影的内容:

1 Skyfall#2 The Impossible# 

这里就是BEING打印的内容:

1 Skyfall 
2 The Impossible 
2 

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

1 Skyfall 
2 

下面是使字符串存储在电影中的方法。这使用一个LinkedList。 lineNumbers在这种情况下是正确的。 numItems是LinkedList中Listnode < String>(又名电影)的数量。

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; 

我不明白为什么它打印的是额外的数字。谁能帮忙?

+0

打印标记的长度,以获得answser。 – 2013-03-13 05:30:10

+0

你认为电影的内容不是正在运行的内容。 'split'工作正常,它按照你的预期分裂它。 – Makoto 2013-03-13 05:32:53

+0

什么是ineNumbers? – smk 2013-03-13 05:33:03

回答

1

之间的不匹配。请检查你的条件是否为linen linen.that是真的,当它应该是错误的。

和statment POS后++执行第二条件

if (pos < numItems){ 

未被满足并且它打破。

所以最终你必须

1 007:大破天幕杀机#2不可能的#2#

1

你还没有发布你的完整代码,所以它很难准确。但你的分裂很好。

我敢打赌,这个问题是因为得到执行两次在此代码

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

lineNumberspos