再帰関数を使用してCAPITAL母音で始まる単語の数を数えます

UserKunal123:

関数count()などの単語の数をカウント再帰関数である:これは、資本母音で始まる単語の数がどのカウントして表示の下に私のコードです。

import java.util.*;

class Check
{
    String str; int w; 

    StringTokenizer S; 
    void InputString()
    {
        Scanner sc=new Scanner (System.in);
        System.out.println("Enter a String:");
        str=sc.nextLine();
    }

    void counter(int nWord)
    {                     
        if(nWord<=S.countTokens())
        {
            String word=S.nextToken(); 
            char first=word.charAt(0); 
            if(first=='A' || first=='E' || first=='I' || first=='O' || first=='U')
            //Checking if the word begins with a CAPITAL VOWEL.
            {
                w++; 
            }
            counter(nWord+1);
        }
    }

    void display()
    {
        S=new StringTokenizer(str);
        counter(1);
        System.out.println("Given String: "+str);
        System.out.println("Number of words beginning with capital vowels = "+w);
    }

    void main()
    {
        InputString();
        display();
    }
}

入力の場合:「言語指向プログラミングのJavaされたアンオブジェクト。」出力:= 3、このような単語の数

しかし、明らかに、与えられた文字列で4つのなどの言葉があります。私はミスを犯した場所知っていただきたいと思います。ありがとう!

ロバート・コック:

Javadocはおよそ言いますStringTokenizer.countTokens()

それは例外を生成せずにトークナイザのnextTokenメソッドを呼び出せる回数を計算します。現在の位置は進んでいません。

言い換えれば、それぞれの呼び出しの後nextTokencountTokens下の番号を返します。
これは、あなたが原因counterではないとして、多くの場合、あなたが期待するとして呼び出されます。

代わりにif (nWord<=S.countTokens())、してみてくださいif (S.countTokens() > 0)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=25458&siteId=1