Program run down : take in words from file give them a hash value, place them into an array if collisions occur create a list in the array.
I can get them to be inserted and semi printed correctly for some reason when I print a collided list it only prints the last inserted. The problem is when I print the entire array I get Stopped with a null pointer exception.
This is the code I to move from linked list to linked list, and where I am getting the error:
WordList list = (WordList)arrayString[3];
list.display();
with the error:
Exception in thread "main" java.lang.NullPointerException
at p7b.main(p7b.java:45)
I don't understand why I keep getting this.
COMPLETE CODE:
WordList class https://www.dropbox.com/s/6a4pk7kt2cllgga/WordList.java?dl=0
class WordList{
    public Word firstWord = null;
    public void insert(Word newWord, int hashKey){
        Word prev = null;
        Word curr = firstWord;
        newWord.key = hashKey;
        while(curr != null && newWord.key > curr.key){
        prev = curr;
        curr = curr.next;
        }
        if(prev == null)
            firstWord = newWord;
        else
            prev.next = newWord;
            newWord.next = curr;
    }//end insert
    public String display(){
    if(firstWord == null){
    return "null";
    }
    Word curr = firstWord;
    while (curr != null){
        System.out.println(curr.returnWord() + "    " +curr.returnHashVal());
        curr = curr.next;
    }
    return "done";
    }//end display
Word Class https://www.dropbox.com/s/hzrksrdwhbiw6on/Word.java?dl=0
import java.util.*;
class Word{
protected String theWord;
protected int hashValue;
protected Word next;
protected int key;
public Word(String theWord,int hashValue){
    this.theWord = theWord;
    this.hashValue = hashValue;
}
public String returnWord(){
return theWord;
}
public int returnHashVal(){
return hashValue;
}
}//end class
Main https://www.dropbox.com/s/3o46bp1i3aqanih/p7b.java?dl=0
import java.util.*;
import java.io.*;
public class p7b{
    public static void main(String[] args){
    int[] arrayNums = new int[40];
    Object[] arrayString = new Object[40];
       // Location of file to read
        File file = new File("p7.dat");
        try {
            Scanner in = new Scanner(file);
            while (in.hasNextLine()) {
                String key = in.nextLine(); //READ LINE
                System.out.println("Input: "+key);  //PRNT LINE
        int length = length(key);   //KEY LENGTH
        //System.out.println(length);     //PRNT LENGTH
                int Val = assignVal(0,key);
        //System.out.println("val: "+Val);
        int ValTwo = assignVal(length-1,key);
        //System.out.println("valTwo: "+ValTwo);
        int hashVal = keyVal(Val,ValTwo);
        //System.out.println("hash value: " + hashVal);
        Insert(hashVal,key,arrayNums,arrayString);
        //arrayNums[hashVal] = hashVal;
        //arrayString[hashVal] = key;
         }
            for(int i = 2; i < 38; i++){
        //System.out.println(arrayString[i]+"    "+arrayNums[i]);
        //System.out.println(String.format("Word:%11s-----------Hash Value:%5s ".replace(" ", "ƒ"),
       // arrayString[i], arrayNums[i]).replace(" ", "-").replace("ƒ", " "));
    WordList list = (WordList)arrayString[i];
    list.display();
}
            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }//end main
//-------------------------------------------------------------
    public static void Insert(int hashVal, String key,int[] arrayNums, Object[] arrayString){
    Word word = new Word(key,hashVal);
    WordList list = new WordList();
            arrayString[hashVal] = list;
            //System.out.println("here");
            list.insert(word,hashVal);
            //System.out.println("X");
            //list.display();
    }//end Insert
    public static int keyVal(int first,int last){
    int num = first + last;
    return num;
    }//end keyVal
    public static int length(String key){
    int length = key.length();
    return length;
    }//end length   
    public static int assignVal(int position, String key){
    char Hkey = key.charAt(position);
    int Val = 0;
    switch(Hkey) {
        case 'A': Val = 11;
              break;
        case 'B': Val = 15;
              break;
        case 'C': Val = 1;
              break;
        case 'D': Val = 0;
              break;
        case 'E': Val = 0;
              break;
        case 'F': Val = 15;
              break;
        case 'G': Val = 3;
              break;
        case 'H': Val = 15;
              break;
        case 'I': Val = 13;
              break;
        case 'J': Val = 0;
              break;
        case 'K': Val = 0;
              break;
        case 'L': Val = 15;
              break;
        case 'M': Val = 15;
              break;
        case 'N': Val = 13;
              break;
        case 'O': Val = 0;
              break;
        case 'P': Val = 15;
              break;
        case 'Q': Val = 0;
              break;
        case 'R': Val = 14;
              break;
        case 'S': Val = 6;
              break;
        case 'T': Val = 6;
              break;
        case 'U': Val = 14;
              break;
        case 'V': Val = 10;
              break;
        case 'W': Val = 6;
              break;
        case 'X': Val = 0;
              break;
        case 'Y': Val = 13;
              break;
        case 'Z': Val = 0;
              break;
    }//end switch
    return Val;
    }//end assignVal
}//end class
-any help would be great thanks.
 
    