私がやろうとしていることと私が抱えている問題は次のとおりです。動的配列への道を「偽造」したいのです。つまり、通常の配列構造を使用して、それがいっぱいになるたびに、古い配列よりも約 25% 大きいサイズの新しい配列を作成し、古い配列の要素を新しい配列にコピーします。
// Whenever my original nodes array is full
Node aNew[];
aNew = new Node[newDesiredSize];
//I create every new element in the new array for this to be a deep copy
for (int i=0; i<numVert; i++){
aNew[i] = new Node(nodes[i].getId());
}
nodes = aNew;
しかし、これは機能していないようです。新しく作成した配列を埋めてアクセスしようとすると、NullPointerException
エラーが発生します。
私は動的配列への道を偽造するというこの概念と戦ってきましたが、明らかに何かが欠けています。
真に動的な構造の使用ArrayList
またはその他の形式は許可されていません。
/ * ** /
編集:提案に応じて、変更しました
aNew[i] = new Node(nodes[i].getId());
に
aNew[i] = nodes[i];
しかし、これは問題を解決していないようです。
また、すべての i の null の場所をチェックしたところ、あることがわかりました。プログラムは、新しく成長した部分全体を「失っている」ようです。
/ * /
解決しました!成長に伴う新要素の追加が課題でした。今は大丈夫です。ご協力いただきありがとうございます。今後の参照用に詳細情報を投稿します。