-5

テキスト ファイルから情報を読み取るようにコーディングしようとしています。空白で区切られた各単語が何回出現するかを調べる必要があります。次に、各単語の数をアルファベット順に出力する必要があります。TreeMap、keySet()、および Iterator の使用を検討しています。私のコードは非常に不完全で、かなり行き詰まっています。

    import java.util.HashMap;
    import java.util.Map

    public class WordCount<E extends Comparable<E>> {

        private static Map<String, Integer> map = new HashMap<String, Integer>();

        static {
            fillMap(map, "Alice.txt");
        }

        private static void fillMap(Map<String, Integer> map, String fileName) {


       }

}

4

1 に答える 1

1

これは、あなたが求めた正確なコードです。すべての単語を保存してカウントします。取得した単語が存在しない場合はマップに追加し、存在する場合はその値を増やします。最後に、すべてのキーと値を出力します。それを使用して、質問があれば聞いてください。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

/*
 * @author Mr__Hamid
 */
public class overFlow {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        Map m1 = new HashMap();

        try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                String[] words = line.split(" ");//those are your words
                for (int i = 0; i < words.length; i++) {
                    if (m1.get(words[i]) == null) {
                        m1.put(words[i], 1);
                    } else {
                        int newValue = Integer.valueOf(String.valueOf(m1.get(words[i])));
                        newValue++;
                        m1.put(words[i], newValue);
                    }
                }
                sb.append(System.lineSeparator());
                line = br.readLine();
            }
        }
        Map<String, String> sorted = new TreeMap<String, String>(m1);
        for (Object key : sorted.keySet()) {
            System.out.println("Word: " + key + "\tCounts: " + m1.get(key));
        }
    }
}
于 2015-07-08T10:07:50.323 に答える