2017-05-01 7 views
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; 

が使用されていませんでした。

+2

あなたの主な問題は、 'Heap'コンストラクタの最初の行であるSeelenvirtuoseするありがとう:'シリアル[]データを= ... '。ここで_methodローカル変数_を作成して初期化しますが、明らかに_instance変数_を初期化したかったのです。だからこの行を単に 'data = ...'に変更してください。 – Seelenvirtuose

+0

@Seelenvirtuose睡眠不足;-) –

+0

@ScaryWombat可。 ;-) – Seelenvirtuose

答えて

1

ヒープコンストラクタで、インスタンス変数を再度初期化しました。

関連する問題