2017-11-11 14 views
-3

これは、Javaハッシュ関数を使用せずにハッシュを実装するためのコードです。オブジェクトを宣言して配列にインデックスを割り当てた後にnullエラーが発生する

public static int calcHash(String key, int tableSize) { 


    int i, l = key.length(); 
    int hash = 0; 
    for (i = 0; i < l; i++) { 

     hash += Character.getNumericValue(key.charAt(i)); 
     hash += hash << 10; 
     hash ^= hash >> 6; 
    } 
    hash += hash << 3; 
    hash ^= hash >> 11; 
    hash += hash << 15; 
    if (hash > 0) return hash % tableSize; 
    else return -hash % tableSize; 
    } 
} 

これらの行で:

public class Contact { 
    String name; 
    int phone; 
} 

public class Hash { 
    public static void main(String[] args) { 

    Contact[] table = new Contact[1009]; 

    int tableSize = 1009; 

    int out = calcHash("Ahmed", tableSize); 

    table[out].name = "Ahmed"; //This line has an error 
    table[out].phone = 23445677; //This line has an error 

    System.out.println(out); 

    } 

名のハッシュ値を生成するための方法: 私は電話と名前と連絡先を作成する

クラスかかわらず、エラーjava.lang.NullPointerExceptionを得ましたHashクラスは例外をスローしています:

table[out].name = "Ahmed"; //This line has an error 
table[out].phone = 23445677; //This line has an error 

答えて

0

table[Out]次の行が実行された場合はnullです:

table[Out].Name = "Ahmed"; 

は、プロパティを設定する前に、新しいインスタンスにtable[Out]を設定してみてください:

table[Out] = new contact(); 
table[Out].Name = "Ahmed";  
table[Out].phone = 23445677; 
+0

はsoooooooooありがとうございました! –

関連する問題