2011-02-17 51 views
1

這怎麼寫?我需要幫助,特別是使用我的nextWord方法這個怎麼寫?我特別需要使用我的nextWord方法的幫助

package code; 

import java.util.HashMap; 

public class WordCounter { 

    /** 
    * Reads a file (identified by inputFilePath), one character at a time, and tracks 
    * word counts using a java.util.HashMap<String,Integer>. 
    * 
    * A word is defined as a contiguous sequence of characters that does not contain 
    * word separator characters, where word separator characters are: ' ', '\t', '\n', 
    * ',' and '.' 
    * 
    * You may use only CharacterFromFileReader to read characters from the input file. 
    * 
    * In order to keep your code readable, break your code into several methods. Only 
    * the wordCounts method may be public; define meaningful private helper methods that 
    * you call from the wordCounts method. 
    * @returns a HashMap containing the word->count mappings 
    */ 

    public HashMap<String,Integer> wordCounts(String inputPath) { 

     return new HashMap<String, Integer>(); 
    } 

    private String nextWord(CharacterFromFileReader iterator) { 

     while(iterator.hasNext()){ 
//make loop that takes each word an saves it to a string until u hit a space break 

     String s = ""; 

     if(iterator.hasNext()){ 

    } 
     } 
    return null; 
    } 
     } 
+1

您曾經試圖弄清楚你自己?你有什麼嘗試?就目前而言,你要求我們爲你做功課。 – Blorgbeard 2011-02-17 19:14:01

回答

0

這個怎麼樣?

String words[] = str.split("[ ,\\t\\n,\\.]"); 

要生成str,你可以在你的iterator循環使用append操作到StringBuilder

0

我會在您的nextWord()中使用StringBuider。然後,您可以進行迭代,直到您到達單詞分隔符或流的結尾,然後返回該單詞。它應該像這樣:

StringBuilder sb = new StringBuilder(); 
char nextChar; 
while(iterator.hasNext()) { 
    nextChar = iterator.next(); 
    switch(nextChar) { 
     case ' ': 
     case '\t': 
     case '\n': 
     case ',': 
     case '.': 
      return sb.toString(); 
    } 
} 
0

我認爲你可能會接近定義nextWord的錯誤方式的問題。看起來你已經爲nextWord函數填充了一個框架,而沒有理解函數應該如何完成它將要做的事情。這是倒退。嘗試以下基本步驟:

  1. 用英文寫下nextWord應該做什麼。想想任何邊緣情況。給它一個句子應該返回什麼?如果CharacterFromFileReader中沒有字符,應該返回什麼?

  2. 一旦你有了這個定義,一步一步地寫下如何完成任務的說明。例如1)獲取下一個字符2)如果字符是空白3)等...

  3. 請嘗試按照說明自己使用紙和筆。做他們的工作?如果沒有編輯並重復此步驟,直到他們這樣做。

  4. 現在您知道了如何功能應該工作,實現我猜測,對於nextWord()的框架已經記下了使用Java代碼

0

的說明 - 方法是由給定老師,如果OP會傳遞一些涉及到StringBuilder/StringBuffer的東西,教師可能會尖叫「我們還沒有覆蓋那個」。另外,老師似乎對效率低下的對象創建每個角色的怪物感到非常滿意,所以我認爲OP應該只使用字符串;如:低效允許由老師

private String nextWord(CharacterFromFileReader iterator) { 
    String toReturn = ""; 
    while(iterator.hasNext()){ //make loop that takes each word an saves it to a string until u hit a space break 
      String s = ""; 
      if(iterator.hasNext()){ 
        char c = iterator.next(); 
        if(c==' ') break; 
        toReturn = toReturn+c; 
      } 
    } 
    return toReturn; 
}