1

テキスト ファイルに次のものが含まれているとします。

彼は男の子です 。
彼女は病気だ 。
アリが遊んでいます。
私たちは食べています。
犬が吠えています。
彼と彼の兄弟は走っています。
彼は遊んでいる 。

そして、文字列を以下に分けて比較したい:

彼は
男の子
です

彼女は
病気
です。

等々。

上記のすべての単語をベクトルに入れました。入力した文字列とどのように比較できますか?

方法が次のようであると仮定します: 入力文字列:He is a boy .

He is入力文字列から、ベクトル内で何回出現するかを調べてベクトルと比較したい。

これは私が試したことです:

try{
    // Open the file that is the first 
    // command line parameter
    FileInputStream fstream = new FileInputStream("textfile.txt");

    // Get the object of DataInputStream
    DataInputStream in = new DataInputStream(fstream);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String strLine;
    int lineNum = 0;

    Vector text= new Vector();
    Enumeration vtext = text.elements();

    //Read File Line By Line
    while ((strLine = br.readLine()) != null)   {
        // Print the content on the console
        //System.out.println (strLine);
        lineNum++;

        String[] words = strLine.split("\\s+");

        //System.out.println(words[0]);
        for (int i = 0, l = words.length; i + 1 < l; i++){
            text.addElement(words[i] + " " + words[i + 1]);
        }       
    }
    String str23 = "She is"; 
    while(vtext.hasMoreElements()){
        String yy = "He is";
        if(text.contains(yy)){
            System.out.println("Vector contains 3."); 
        }
        System.out.print(vtext.nextElement() + " "); 
        System.out.println(); 
    }       
    System.out.println(text);
    System.out.println(lineNum);

    //Close the input stream
    in.close();
}catch (Exception e){  //Catch exception if any
    System.err.println("Error: " + e.getMessage());
}
4

1 に答える 1

0

これは答えるのに時間の無駄かもしれませんが、次のようになります。

私はあなたのループを次のように変更しました:

String str23 = "She is"; 
int countOfHeIs = 0;
String yy = "He is";
while(vtext.hasMoreElements()){

    if (vtext.nextElement().equals(yy))
    {
        countOfHeIs++;
    }
    if(text.contains(yy)){
        System.out.println("Vector contains 3."); 
    }
    System.out.print(vtext.nextElement() + " "); 
    System.out.println(); 
}       
System.out.println(text);
System.out.println(lineNum);
System.out.printf("'%s' appears %d times\n", yy, countOfHeIs);

このメソッドcontainsは出現回数をカウントしません - はい/いいえの指示を与えるだけです - 出現回数を自分で数えるべきです。

ここでは a が最適な選択ではないため、これは問題の最適な解決策でVectorはありません。Map<String,Integer>各文字列の出現回数を追跡するためにa を使用することをお勧めします。

于 2012-10-03T09:49:32.550 に答える