0

以下のコードは、txt ファイルからすべての単語を取得し、その横に数字の 1(count) を出力します。私のプログラムの目的は、そのようにすべての単語を取り込むことですが、それが重複している場合は、一致する単語を見つけてカウントに1つ追加したい単語を出力したくありません。

Scanner in = new Scanner(new File(filename));
int i = 0;
int n = 1;
String w = "";
String txt = "";

while ((in.hasNext())) {
    w = in.next() ;
    wrd[i] = w;
    num[i] = n;
    i++;
    txt = wrd[i];

}
4

1 に答える 1

4

Map を使用したい:

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

while (in.hasNext()) {
    String w = in.next();

    if (map.containsKey(w)) {  // Already in the map
        map.put(w, map.get(w) + 1);  // Increment the counter
    } else {  // First time w is found, initialize the counter to 1
        map.put(w, 1);
    }
}

基本的に、マップはキー (ここでは、カウントしたい単語) を値 (現在の単語の出現回数) に関連付けています。containsKey指定されたキーに値がまだ関連付けられているかどうかを確認し、getその値 (存在する場合) を取得してput、新しい値を設定します。

于 2013-03-07T16:10:51.193 に答える