0

尝试将我的数组初始化为 1 并在每次输入填满时将其加倍。这就是我现在所拥有的

int max = 1;
 PhoneRecord[] records = new PhoneRecord[max];
      int numRecords = 0;
      int size = Integer.parseInt(length.records[numRecords]);
 if (size >= max) {
   size = 2*size;
 }

但它显然充满了失败。任何建议或指导都会很棒,谢谢。

4

3 回答 3

1

为什么不使用ArrayList?它会自动表现出非常相似的特征。

私有的 grow() 方法

int newCapacity = oldCapacity + (oldCapacity >> 1);

你不能覆盖增长行为,但除非你真的因为你的应用程序特性需要加倍,否则我相信它就足够了。

于 2012-10-15T16:59:32.430 回答
1

好的,您应该使用ArrayList,但其他几个人已经告诉过您了。

如果您仍想使用数组,请按以下方式调整它的大小:

int max = 1;
PhoneRecord[] records = new PhoneRecord[max];
int numRecords = 0;

void addRecord(PhoneRecord rec) {
    records[numRecords++] = rec;
    if(numRecords == max) {
        /* out of space, double the array size */
        max *= 2;
        records = Arrays.copyOf(records, max);
    }
}
于 2012-10-15T17:11:15.987 回答
1

大小只是乘以大小数,而不是数组大小的两倍。尝试:

            records = Arrays.copyOf(records, records.length*2);
于 2012-10-15T17:16:53.677 回答