我有一个带有5000个数字的“do - while”循环,应该在每次循环运行期间添加到数组中,如下所示:
问题在于,每次执行循环时,数字都会被覆盖,并且一旦循环结束,只有数据的最后一个数据在数组中。
我使用此代码:
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());
答案 0 :(得分:1)
你总是只写入你巨大阵列的前5000个元素。
相反,您希望将getFollowersIDs()调用的结果分配给单独的本地数组,然后使用arraycopy将5000个当前关注者复制到更大的所有关注者阵列中
答案 1 :(得分: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];
P.S: 上面的代码没有经过测试也没有编译,只是试着举例说明你应该做什么
答案 2 :(得分:0)
一个想法是声明fArray是二维的。 示例简要代码: long fArray [] [];
int index = 0;
[从循环内部开始] 一些代码...
fArray [index] = twitter.getFollowersIDs(name,cursor).getIDs(); 索引++;
一些代码...... [在循环中结束]
我希望这清楚而简单。