0
ヒープソートで何かを実装する必要があり、バグがあります。ヒープクラスのヒープソート実装のバグ、インサート機能付き
:
private serial[] data;
private int size;
private static final int FRONT = 1;
public Heap(){
serial[] data = new serial[1000]; //serial - object with a String
this.size = 0;
data[0] = new serial("");
}
public void insert(serial t){
size++;
data[size] = t; **<--- Null Pointer EXCEPTION**
int current = size;
while(data[current].serialNumber() > data[parent(current)].serialNumber()){
swap(parent(current), current);
current = parent(current);
}
}
(ヒープ実装のコースの多くの機能)。 とメインクラス:
public class Simulation {
public static void main(String[] args) {
Heap maxHeap = new Heap();
maxHeap.insert(new serial("a"));
maxHeap.insert(new serial("ba"));
maxHeap.print();
}
}
(私は文字列を挿入し、数字に基づいてソートされた配列を返す) 私はプログラムを実行し、それがNULLポインタ例外を返す(insert関数に、それがで書かれていますコード)。何らかの理由で
は、それが言うこと:(ヒープクラス)
private serial[] data;
が使用されていませんでした。
あなたの主な問題は、 'Heap'コンストラクタの最初の行であるSeelenvirtuoseするありがとう:'シリアル[]データを= ... '。ここで_methodローカル変数_を作成して初期化しますが、明らかに_instance変数_を初期化したかったのです。だからこの行を単に 'data = ...'に変更してください。 – Seelenvirtuose
@Seelenvirtuose睡眠不足;-) –
@ScaryWombat可。 ;-) – Seelenvirtuose