-3

Javaでループを使用せずに文字列内の単語数を見つけるにはどうすればよいですか?

4

5 に答える 5

3

ループを回避したい場合は、再帰を使用する必要があります。

于 2012-11-09T18:27:14.067 に答える
2

次のようなことを試してください:

int words = new java.util.StringTokenizer(myString," ").countTokens();

動作するかどうかは試していませんが、動作するはずです。

于 2012-11-09T18:29:23.030 に答える
1

これを試して。もちろん、印刷を除いて、舞台裏でさえも、ここには間違いなくループはありString.lengthません(反復せず、コピーを作成しないと仮定します)。String.substring

  static int nSpaces ( String s ) {
    int n = 0;
    if ( s.length() > 0 ) {
      if ( s.length() > 1 ) {
        // Split it in half.
        int center = s.length() / 2;
        // Count each half.
        n += nSpaces(s.substring(0, center))
           + nSpaces(s.substring(center));
      } else {
        // Just 1 character.
        if ( s.charAt(0) == ' ' ) {
          // It's a space.
          n += 1;
        }
      }
    }
    //System.out.println(n+" spaces in '"+s+"'");
    return n;
  }

  static int nWords ( String s ) {
    return nSpaces (s) + 1;
  }

  public static void main(String args[]) {
    String test = "Now is the time for all good men to come to the aid of the party.";
    System.out.println("nWords(\""+test+"\") = "+nWords(test));
  }
于 2012-11-09T20:02:09.960 に答える
0

1) を使用splitして、結果の配列の長さを取得できますが、これは空白ではないもの (数字など) を単語としてカウント
ます

于 2012-11-09T18:26:07.063 に答える
0
  1. 文字列を分割してすべての単語を取得できます。
  2. フィルター/正規表現を適用して、不要な句読点や文字などを削除します。
  3. 次に、完全な配列をセットに入れて、一意の単語を取得します。

上記の各ステップで、要件がどのように単語を必要としているか(一意または重複)に応じて、探している答えを得ることができます

于 2012-11-09T18:28:26.950 に答える