0

我有一个“do - while”循环,其中包含 5000 个数字,在每次运行循环期间应该将其添加到数组中,如下所示:

问题是每次执行循环时,数字都会被覆盖,一旦循环结束,数组中只有最后一次运行的数据。

我使用这段代码:

    long cursor = -1;
    long[] fArray = new long[100000];  // more than enough space in array
    IDs ids = twitter.getFollowersIDs(name, cursor); // start with first page of 5000 numbers

    do 
    {                       
        ids = twitter.getFollowersIDs(name, cursor);            
        fArray = twitter.getFollowersIDs(name, cursor).getIDs(); // this gets Array with 5000 numbers every time until "empty"
        cursor = ids.getNextCursor();   // jump to next array with 5000 new numbers     
    } while (ids.hasNext());
4

3 回答 3

1

您总是只写入非常大的数组的前 5000 个元素。

相反,您希望将 getFollowersIDs() 调用的结果分配给单独的本地数组,然后使用arraycopy将 5000 个当前关注者复制到更大的所有关注者数组中。

于 2012-05-11T18:24:10.047 回答
0

在线fArray = twitter.getFollowersIDs(name, cursor).getIDs(); // this gets Array with 5000 numbers every time until "empty" 您正在对您的数组进行简单的分配fArray

你应该使用这样的东西

long tempArr[] = twitter.getFollowersIDs(name, cursor).getIDs();

for (int i = previous_length_of_array; i < previous_length_of_array + tempArray.length; i++)
   fArray[i] = tempArr[1 - previous_length_of_array];

PS:上面的代码没有经过测试也没有编译,只是试图给你举例说明你应该做什么

于 2012-05-11T18:25:08.843 回答
0

一种想法是将 fArray 声明为二维的。示例简要代码:long fArray[][];

整数索引 = 0;

[在循环中开始] 一些代码......

fArray[index] = twitter.getFollowersIDs(name, cursor).getIDs(); 索引++;

一些代码... [在循环内结束]

我希望这很清楚和简单。

于 2012-05-11T19:04:38.480 回答