Phil Mendelsohn wrote: > public class PriorityQueue{ > > public qItem [] Q; You define Q here but give no value which means Q is null. > > public int qSize; > public int [] where; > > public class qItem{ > public int item; > public int key; > > public qItem(int item, int key){ > //consructor > this.item = item; > this.key = key; > } > } > > public PriorityQueue(int maxItem){ > //constructor of an empty queue: see below > qItem [] Q = new qItem[maxItem]; You define Q again here in the constructor which means Q is a local variable to the constructor and you are NOT referencing the instance variable Q defined in the class. > > int [] where = new int[maxItem]; > for( int j=0; j < maxItem; j++){ > where[j] = -1; > Q[j] = new qItem(-2, -3); > System.out.println(where[j] + " " + Q[j].item + > " " + Q[j].key); > } > int qSize = 0; > }//end constructor > > void insert(int item, int key){ > //insert the item with given key as its priority > qSize++; > System.out.println("qSize: " + qSize); > System.out.println("Item: " + item); > System.out.println("Key: " + key); > for(int i = 0; i < qSize; i++){ > System.out.println(Q[i].item); > System.out.println(Q[i].key); > } > } Any reference to Q here will result in a NullPointerException because again, you are referencing the instance variable Q defined in the class but never initialized. Remove the qItem[] from the Q in the public constructor so that you are referencing the instance variable Q. Doing so and running with a queue size of 1 and an item/key value of 1/1, I see the following: -1 -2 -3 qSize: 1 Item: 1 Key: 1 -2 -3 Is this more of what you are looking for? -- Perry Hoekstra E-Commerce Architect Talent Software Services perry.hoekstra at talentemail.com