4

文の単語数を数えるためにメソッドを使用するとします。私はこのコードを書きましたが、なぜ機能しないのかよくわかりません。何を書いても、1単語しかカウントされません。まったく別のアイデアを提供するのではなく、私が書いたものを修正する方法を教えていただければ、それは素晴らしいことです:

import java.util.Scanner;

public class P5_7 
{
    public static int countWords(String str)
    {
        int count = 1;
        for (int i=0;i<=str.length()-1;i++)
        {
            if (str.charAt(i) == ' ' && str.charAt(i+1)!=' ')
            {
                count++;
            }
        }
        return count;
    }
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a sentence: ");
        String sentence = in.next();
        System.out.print("Your sentence has " + countWords(sentence) + " words.");
    }
}
4

17 に答える 17

5

行全体を読む必要があります。in.next();使用する代わりにin.nextLine()

于 2013-04-10T16:12:08.260 に答える
0
This program works fine, 

step1:文字列を入力

ステップ 2: 文字列を配列内の単一の単語ストアに分割する

step3 : 配列の長さを返す

public class P5_7 
{
public static int countWords(String str)
{
   String words[]=str.split(" ");
   int count=words.length;
    return count;
}
public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    System.out.print("Enter a sentence: ");
    String sentence =in.nextLine();
    System.out.print("Your sentence has " + countWords(sentence) + " words.");
}

}

于 2014-03-13T09:09:41.467 に答える
0

単純なロジックは、前に空白がない場合にのみスペースをカウントすることです。これを試して:

public class WordCount 
{
    public static void main(String[] args) 
    {
        int word=1;
        Scanner s = new Scanner(System.in);
        System.out.println("Enter a string: ");
        String str=s.nextLine();
        for(int i=1;i<str.length();i++)
            {
                if(str.charAt(i)==' ' && str.charAt(i-1)!=' ')
                word++;
            }
       System.out.println("Total Number of words= "+word);
    }
}
于 2016-01-09T11:26:24.860 に答える
0

で境界条件を確認してくださいstr.charAt(i+1)StringIndexOutOfBoundsException文字列がスペースで終了すると、結果が になることがあります。

  1. 文字列が ' ' で始まる場合を考慮する
  2. 文字列は空白の可能性があります。
  3. 「単語」の定義は異なる場合があります。たとえば、「1 2」です。1,2単語ですか?

別の方法が必要ないことはわかっていますが、string.split(" ").length() を使用すると簡単に開始できます。

于 2013-04-10T16:14:14.723 に答える
0

空文の場合、int count = 0;の代わりにを付けないでくださいint count = 1;。Java エラーが発生した場合は、質問に追加してください。

于 2013-04-10T16:11:20.703 に答える
0

テスト済みの方法 - すべての入力を処理

public static void countwords() {
    String s = "  t    ";
    int count = 0;
    int length = s.length()-1;
    char prev = ' ';

    for(int i=length; i>=0; i--) {
        char c = s.charAt(i);
        if(c != prev && prev == ' ') {
            count++;
        }
        prev = c;
    }
    System.out.println(count);
}
于 2015-04-21T05:41:21.323 に答える
-1

このメソッドを使用して、文字列内の単語数を計算します:-

    private int calculateWords(String s){

    int count=0;

    if(s.charAt(0)!=' ' || s.charAt(0)!=','){

        count++;

    }

    for(int i=1;i<s.length();i++){
            if((s.trim().charAt(i)==' ' && s.charAt(i+1)!=' ')  || (s.trim().charAt(i)==',' && s.charAt(i+1)!=',')){

                count++;
            }

    }

    return count;
}
于 2014-05-27T07:52:53.510 に答える