-1

我正在尝试使用 split("#") 打印出字符串的元素,其中 # 是分隔元素的字符。我的代码如下(movies 是正在打印的字符串):

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 为真。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;

我不知道为什么要打印那个额外的数字。任何人都可以帮忙吗?

4

2 回答 2

1

您还没有发布完整的代码,因此很难准确。但是你的分裂很好。

我敢打赌,问题是因为和之间的不lineNumbers匹配pos

于 2013-03-13T05:34:13.980 回答
1

在这段代码中

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

正在执行两次。请检查您的 linenumbers 条件。当它应该为 false 时为 true。

并且在执行语句 pos++ 之后,第二个条件

if (pos < numItems){

不满意,它打破了。

所以最终你有

1 Skyfall#2 不可能#2#

于 2013-03-13T05:34:21.143 回答