2013-11-22 76 views
0

空指針異常,我得到一個錯誤的位置:在sort()方法

if (this.words[j].compareTo(this.words[minIdx]) < 0 
這種方法的

private void sort() { 
     int minIdx; 
     Word temp; 
     this.shrink(); 
     for (int i = 0; i < this.words.length; i++) { 
      minIdx = i; 
      for (int j = i+1; 
        j < this.words.length; 
        j++) { 

       if (this.words[j].compareTo(this.words[minIdx]) < 0) { 
        minIdx = j ; 
       } 
      } 
      temp = this.words[minIdx]; 
      this.words[minIdx] = this.words[i]; 
      this.words[i] = temp; 
    } 
} 

我相信這是因爲我的收縮方法

private void shrink() 
{ 
    Word[] randomWords = new Word[aWordCount]; 
    for (int i=0; i < uniqueWordCount;i++) 
    { 
     randomWords[i]=words[i]; 
    } 
    words=randomWords; 
} 

有人點我在正確的方向?

+0

它可能是因爲這個功能,但它可能是因爲別的東西。最好的辦法就是檢查null(this.words [j]!= null)並保持安全。 – ljgw

回答

0

正如我在評論中所說,它可能是任何東西;我們確實需要查看完整的代碼和一些輸入信息。

但是:

private void shrink() 
{ 
    Word[] randomWords = new Word[this.words.length]; 
    for (int i=0; i < this.words.length;i++) 
    { 
     randomWords[i]=words[i]; 
    } 
    words=randomWords; 
} 

換句話說,確保你不與一個潛在有另一個長度代替第一陣列(並有可能在後面的空項目)。