2017-12-20 15 views
-4

私は、javaを使用して文中の特定の単語の出現を見つけようとしています。javaを使用して文中の任意の単語の出現頻度を確認してください。

私の入力には2行、最初の行には1語、2行目には文が含まれています。

私は値1を印刷するために以下のプログラムを試しましたが、同じ単語ではなく、それぞれの単語に印刷しました。誰かがこれを解決するために私を助けてくれる?

import java.io.IOException; 
import java.util.Arrays; 
import java.util.Map; 
import java.util.stream.Collectors; 

public class Test { 

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

     String test = "love\n" + "There is only one happiness in this life,to love and be loved."; 

     System.out.println(test); 

     Map<String, Integer> wordCount = Arrays.stream(test.split("\\s+")) 
       .collect(Collectors.toMap(k -> k, v -> 1, (v1, v2) -> v1 + v2)); 

     // Print word frequencies 
     wordCount.forEach((k, v) -> System.out.printf("%s %d\n", k, v)); 

    } 

}      
+0

さてあなたは、偶数ワード 'love'、あなたはちょうどあなたがスキャンしている文にそれを解析を検索しようとしないでください。 – markspace

+0

Javaで正規表現を使用してみましたか?[groupCount](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#groupCount()) – Veera

+0

_count_出現を試みるか、単語の存在を確認するだけですか? –

答えて

0

これは単純なif文で修正できます。現在のキーが最初の行に一致することを確認するだけです。これを行うには、文字列をマッピングする前に最初の行を単独で取得します。


String test = "love\n" + "There is only one happiness in this life,to love and be loved."; 
// Get first line "love" 
String word = test.split("\\n")[0]; 
/* 
* Get second line (the line to be mapped) 
* "There is only one happiness in this life,to love and be loved." 
*/ 
String senctence = test.split("\\n")[1]; 
System.out.println(test); 

Map<String, Integer> wordCount = Arrays.stream(senctence.split("[\\s+]")) 
     .collect(Collectors.toMap(k -> k, v -> 1, (v1, v2) -> v1 + v2)); 

// Print word frequencies 
wordCount.forEach((k, v) -> { 
    // Check if the key matches the primary input 
    if (k.equals(word)) 
     System.out.printf("%s %d\n", k, v); 
}); 
0

私は最初の問題は、カウントに入力キー値にだったと思います。別途お試しください:次に

String key = "love"; 
String test = "There is only one happiness in this life,to love and be loved."; 

// Print word frequencies 
    wordCount.forEach((k, v) -> { 
     if(k.equalsIgnoreCase(key)) 
     System.out.printf("%s %d\n", k, v); 
    }); 
関連する問題