0

誰かがこれの何が悪いのか教えてもらえますか? プログラムに文字列内の単語数を返させようとしています。無限ループに陥ってる…

int NumberNames(String wholename)

{    
    String testname=wholename;

    int numnames=0;

     int posBlank= testname.indexOf(' ');

     while(testname.length()>0)
    {   
       testname = testname.trim();

       testname=testname.substring(posBlank+1,testname.length());

       numnames++;

       System.out.println(testname);
    }    

    return numnames;

}
4

4 に答える 4

3

2つの問題。ループ内でposBlankの値をリセットしているわけではありません。スペースを含まない文字列を渡すと、サブ文字列は常に文字列全体を返します。両方を解決する必要があります。これを試して:

int NumberNames(String wholename)
{
    String testname=wholename;
    int numnames=1;
    int posBlank= testname.indexOf(' ');

    while(posBlank > 0)
    {   
       testname = testname.trim();
       testname=testname.substring(posBlank+1,testname.length());
       posBlank= testname.indexOf(' ');
       numnames++;
       System.out.println(testname);
    }    

    return numnames;
}
于 2012-10-26T13:58:22.193 に答える
2

代わりに使ってみませんString.split(\\s)か?

 String testname=wholename;
 String[] words = testname.split("\\s");
 sysout(words.length);
于 2012-10-26T14:02:29.970 に答える
2

wholeName.trim().split(" ").length代わりに使用してください

于 2012-10-26T13:59:14.283 に答える
1
return wholename.length() - wholename.replace(" ", "").length() + 1
于 2012-10-26T14:05:45.783 に答える