尝试将数组初始化为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;
}
但显然已经失败了。任何建议或指导都会很棒,谢谢。
答案 0 :(得分:1)
为什么不使用ArrayList?它会自动显示非常相似的特征。
int newCapacity = oldCapacity + (oldCapacity >> 1);
您无法覆盖增长行为,但除非您确实因应用程序特征而需要加倍,否则我确信这样就足够了。
答案 1 :(得分: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);
}
}
答案 2 :(得分:1)
大小只是大小数倍,而不是数组大小的两倍。 尝试:
records = Arrays.copyOf(records, records.length*2);