2013-04-17 94 views
0

我有一個WordFreq類,該類有一個​​方法,該方法從WordCount類創建一個數組。我有​​方法訪問WordCount的其他行沒有問題。從另一個類創建一個數組

我:

public class WordCount{ 

    private String word; 
    private int count; 

    public WordCount(String w){ 
     word = w; 
     count = 0; 
    } 

其次是類方法:

public class WordFreq extends Echo { 

    String words, file; 
    String[] wordArray; 
    WordCount[] search; 

WordFreq傳遞一個文本文件(回聲處理)等詞來搜索的字符串。

public WordFreq(String f, String w){ 
    super(f); 
    words = w; 
} 

public void processLine(String line){ 
    file = line; 
    wordArray = file.split(" "); 

    // here is where I have tried several methods to initialize the search 
    // array with the words in the words variable, but I can't get the 
    // compiler to accept any of them. 

    search = words.split(" "); 

    StringTokenizer w = new StringTokenizer(words); 
    search = new WordCount[words.length()]; 

    for(int k =0; k < words.length(); k++){ 
     search[k] = w.nextToken(); 

我嘗試了其他一些不起作用的東西。我嘗試將search[k] =右邊的內容轉換爲WordCount,但它不會超過編譯器。我不斷收到不兼容的類型。

Required: WordCount found: java.lang.String. 

我不知道該從哪裏出發。

+1

爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

1

嘗試這樣:

String[] tokens = words.split(" "); 
search = new WordCount[tokens.length]; 
for (int i = 0; i < tokens.length; ++i) { 
    search[i] = new WordCount(tokens[i]); 
} 

與你第一次嘗試的問題是,words.split(" ")導致String陣列;您不能分配給WordCount數組變量。第二種方法的問題是words.length()個字符的個數words,而不是令牌的數量。您可能可以通過使用w.countTokens()代替words.length()來使第二種方法正常工作,但同樣需要將由w.nextToken()返回的每個String轉換爲WordCount對象。

+0

這個伎倆!我在一些其他方法中使用.length()結束了一些運行時錯誤。如果你沒有指出這一點,我可能會在那裏停留一段時間。我的程序現在正常運行。謝謝。 – user2288905