【问题标题】:How can write this? I Need help specifially with my nextWord method这怎么能写?我需要帮助,特别是我的 nextWord 方法
【发布时间】:2011-02-17 19:10:05
【问题描述】:

这个怎么写?我需要帮助,特别是我的 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;
    }
        } 

【问题讨论】:

  • 您是否尝试过自己解决问题?你试过什么?就目前而言,您是在要求我们为您做功课。
  • 是的,我有..到目前为止我已经完成的代码是我所做的,关于制作循环和保存每个单词的评论是我的想法..但是我知道该怎么做

标签: java loops hashmap


【解决方案1】:

这个怎么样?

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

要生成str,您可以在iterator 循环中对StringBuilder 使用append 操作。

【讨论】:

    【解决方案2】:

    我会在您的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();
        }
    }
    

    【讨论】:

      【解决方案3】:

      我认为您可能正在处理以错误方式定义 nextWord 的问题。看起来您已经为 nextWord 函数填写了一个框架,但不了解该函数应该如何完成它将要做的事情。这是倒退。尝试遵循以下基本步骤:

      1. 用英文写下 nextWord 应该做什么。考虑任何边缘情况。给定一个句子它应该返回什么?如果 CharacterFromFileReader 中没有字符,它应该返回什么?

      2. 一旦你有了这个定义,就一步一步地写下(英文)如何完成任务的说明。例如1) 获取下一个字符 2) 如果字符是空格 3) 等等...

      3. 尝试自己使用笔和纸按照说明进行操作。做他们的工作?如果没有编辑并重复此步骤,直到他们完成为止。

      4. 既然您知道该函数应该如何工作,请使用 java 代码实现您写下的指令

      【讨论】:

        【解决方案4】:

        我猜 nextWord() 方法的框架是由老师给出的,如果 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;
        }
        

        【讨论】:

          猜你喜欢
          • 2019-08-25
          • 2018-07-24
          • 1970-01-01
          • 2019-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-04
          • 2013-12-24
          相关资源
          最近更新 更多