1

これはプロジェクト用で、ほとんどが終了していますが、文字列またはファイルに含まれる単語の数を数えられるようにする必要があります。ネストされた for ループを使用する必要があり、単語の区切り文字を含む文字列を使用する必要があります。今、これは私が持っているものです:

public static int wordCounter(String text)
{
    String WORDS_GROUP = ",\n ";
    String text= "This is my sample     text";
    int wordCount=0;
    for(int i=0; i<text.length(); i++){
        for(int j=0; j<WORDS_GROUP.length(); j++){
            if(text.charAt(i)==WORDS_GROUP.charAt(j)){
                wordCount++;
            }
        }
    }
}
4

3 に答える 3

0

wordCount最後の文字が属していない場合にのみインクリメントがありますWORDS_GROUP。それ以外の場合は、実際よりも多くの単語になります。たとえば、3 の後に最初のスペースを見つけたが、別のスペースが来ると、アルゴリズムは再びインクリメントし、これは明らかに正しくありませんsamplewordCount

スペースのある最初の変数を見つけて最初のインクリメントを行う場合に設定する新しいboolean変数を導入できます。true次に、空白以外が見つかったら false に設定します。インクリメントは、その変数が に設定されている場合にのみ発生しますfalse

于 2013-10-27T21:07:28.900 に答える
0

「状態」を表すブール値を維持できます。スペースのブロックに入っていますか (true)、またはスペース以外のブロックに入っていますか (false)?

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone {
    public static void main(String[] args) throws java.lang.Exception {
        String WORDS_GROUP = ",\n ";
        String text = "This is my sample     text";
        int wordCount = 0;
        boolean previousCharWasSpace = true;
        for (int i = 0; i < text.length(); i++) {
            boolean thisCharIsASpace = false;
            for (int j = 0; j < WORDS_GROUP.length(); j++) {
                if (text.charAt(i) == WORDS_GROUP.charAt(j)) {
                    previousCharWasSpace = true;
                    thisCharIsASpace = true;
                    break;
                }
                System.out.println("char=" + text.charAt(i) + " j=" + j
                        + " previousCharWasSpace=" + previousCharWasSpace);
            }
            if (!thisCharIsASpace && previousCharWasSpace) {
                wordCount++;
                previousCharWasSpace = false;
                System.out.println("char=" + text.charAt(i)
                        + " previousCharWasSpace=" + previousCharWasSpace
                        + " wordCount=" + wordCount);
            }
        }
        System.out.println("wordCount=" + wordCount);
    }
}

出力:

char=T j=0 previousCharWasSpace=true
char=T j=1 previousCharWasSpace=true
char=T j=2 previousCharWasSpace=true
char=T previousCharWasSpace=false wordCount=1
char=h j=0 previousCharWasSpace=false
char=h j=1 previousCharWasSpace=false
char=h j=2 previousCharWasSpace=false
char=i j=0 previousCharWasSpace=false
char=i j=1 previousCharWasSpace=false
char=i j=2 previousCharWasSpace=false
char=s j=0 previousCharWasSpace=false
char=s j=1 previousCharWasSpace=false
char=s j=2 previousCharWasSpace=false
char=  j=0 previousCharWasSpace=false
char=  j=1 previousCharWasSpace=false
char=i j=0 previousCharWasSpace=true
char=i j=1 previousCharWasSpace=true
char=i j=2 previousCharWasSpace=true
char=i previousCharWasSpace=false wordCount=2
char=s j=0 previousCharWasSpace=false
char=s j=1 previousCharWasSpace=false
char=s j=2 previousCharWasSpace=false
char=  j=0 previousCharWasSpace=false
char=  j=1 previousCharWasSpace=false
char=m j=0 previousCharWasSpace=true
char=m j=1 previousCharWasSpace=true
char=m j=2 previousCharWasSpace=true
char=m previousCharWasSpace=false wordCount=3
char=y j=0 previousCharWasSpace=false
char=y j=1 previousCharWasSpace=false
char=y j=2 previousCharWasSpace=false
char=  j=0 previousCharWasSpace=false
char=  j=1 previousCharWasSpace=false
char=s j=0 previousCharWasSpace=true
char=s j=1 previousCharWasSpace=true
char=s j=2 previousCharWasSpace=true
char=s previousCharWasSpace=false wordCount=4
char=a j=0 previousCharWasSpace=false
char=a j=1 previousCharWasSpace=false
char=a j=2 previousCharWasSpace=false
char=m j=0 previousCharWasSpace=false
char=m j=1 previousCharWasSpace=false
char=m j=2 previousCharWasSpace=false
char=p j=0 previousCharWasSpace=false
char=p j=1 previousCharWasSpace=false
char=p j=2 previousCharWasSpace=false
char=l j=0 previousCharWasSpace=false
char=l j=1 previousCharWasSpace=false
char=l j=2 previousCharWasSpace=false
char=e j=0 previousCharWasSpace=false
char=e j=1 previousCharWasSpace=false
char=e j=2 previousCharWasSpace=false
char=  j=0 previousCharWasSpace=false
char=  j=1 previousCharWasSpace=false
char=  j=0 previousCharWasSpace=true
char=  j=1 previousCharWasSpace=true
char=  j=0 previousCharWasSpace=true
char=  j=1 previousCharWasSpace=true
char=  j=0 previousCharWasSpace=true
char=  j=1 previousCharWasSpace=true
char=  j=0 previousCharWasSpace=true
char=  j=1 previousCharWasSpace=true
char=t j=0 previousCharWasSpace=true
char=t j=1 previousCharWasSpace=true
char=t j=2 previousCharWasSpace=true
char=t previousCharWasSpace=false wordCount=5
char=e j=0 previousCharWasSpace=false
char=e j=1 previousCharWasSpace=false
char=e j=2 previousCharWasSpace=false
char=x j=0 previousCharWasSpace=false
char=x j=1 previousCharWasSpace=false
char=x j=2 previousCharWasSpace=false
char=t j=0 previousCharWasSpace=false
char=t j=1 previousCharWasSpace=false
char=t j=2 previousCharWasSpace=false
wordCount=5

ここでこれで遊ぶことができます: http://ideone.com/ASEjwB

于 2013-10-27T21:09:48.863 に答える
0

ネストされた for ループを絶対に使用する必要がある場合は、最初の for ループでテキスト内のすべての行を処理し、2 番目の (ネストされた) for ループで行ごとにすべての単語を処理し、単純にそれらを数えることができます。

于 2013-10-27T21:05:02.480 に答える