2014-02-23 61 views
0

我試圖編寫一個文本分析程序,其中一種方法應該編寫一個文件,其中包含由某個字母開始的每個單詞以及該單詞的出現次數,使用一個文本文件作爲輸入(BufferedReader和什麼)。錯誤:java.lang.NullPointerException

如果輸入是:「O Pai Natal nao existe。 Mas o coelho da Pascoa existe (e a Fada dos Dentes tambem)。」

輸出爲電子商務應該是:EXISTE 2E 1 到目前爲止我的代碼如下 - 我知道我可以用一個HashMap,但這是學校工作,我們還沒有得知呢,所以我想以保持內發生了什麼演講 - :

void WordList(char c, String file) throws IOException { 

    BufferedWriter out = new BufferedWriter(new FileWriter(ficheiro+".txt")); 
    String[] words = null; 
    int indexVector = 0; 
    String[] wordAlreadyWritten = null; 
    int indexVector2 = 0; 

    for (int i = 0; i < text.length; i++) { 
     if (text[i].charAt(0) == c) { 
      words[indexVector] = texto[i]; /*error here */ 
      indexVector++; 
     } 
    } 
    for (int i = 0; i < words.length; i++) { /*error here*/ 
     if (!wordWasAlreadyWritten(words[i], wordAlreadyWritten)) { 
      out.write(words[i] + ": " + countNumberRepetitions(words[i], words)); 
      wordAlreadyWritten[indexVector2] = words[i]; /* error here*/ 
      indexVector2++; 
     } 
    } 
    out.close(); 
} 

我也使用一些輔助方法,因爲有些人可能已經注意到:

static boolean wordWasAlreadyWritten(String original, String[] array) { 
    boolean was = false; 

    for (int j = 0; j < array.length; j++) { 
     if (original.equals(array[j])) { 
      was = true; 
     } 
    } 
    return was; 
} 

static int countNumberRepetitions(String word, String[] array) { 
    int counter = 1; 
    for (int i = 0; i < array.length; i++) { 
     if (word.equals(array[i])) { 
      contador++; 
     } 
    } 
    return counter; 
} 

如果有人可以解釋java.lang.NullPointerException我越來越和如何解決它,我會比kful。此外,如果有人有任何想法如何使我的代碼更好,它也將不勝感激。

回答

2

初始兩個字符串數組

String[] words = new String[count]; // count any integer value 
String[] wordAlreadyWritten = new String[count]; // count any integer value 

由於你面臨錯誤。

+0

我只是不能似乎找到一個方法來知道整數值放入數組 – user3343824

+0

的尺寸ü可以解釋使用兩個陣列,這樣我可以幫助ü – Kick

+0

我試圖做的是使用「單詞」數組存儲每個單詞,無論多少次,另一個單詞只存儲一次,作爲比較的手段,以便我可以找出它們在「單詞」數組中重複了多少次。對不起,如果它很混淆 – user3343824

0

很少Q記者:

  1. 凡定義的文本?
  2. 我沒有看到'words'字符串數組的任何內存分配。這將導致NPE。

另一個建議:

你沒有研究過的HashMap但你仍然可以編寫自己的HashMap像實施或近似了這一點。我相信你會從中學到一些東西。

+0

文本是在構造函數中定義的,它基本上是一個大字符串。 – user3343824

+0

我很難找到多少內存來分配,不能使用ArrayList,所以它擊毀我的大腦 – user3343824

+0

如果你不知道該數組的大小,我建議你使用鏈表。如果你不能使用LinkedList,那麼我建議你模擬一個鏈表,其中鏈表的每個節點已經綁定了數組。 – vijar

相關問題