2

クラスが単語を数えて上記のエラーを取得し、それが私を怒らせる単純なプログラム。

int words; //variable to hold word count.

//WordCount methos will count the spaces and punciation.
private int WordCount(string str)
{
    int words = 0; //the number of words counted

    //count the white spaces and punctuation.
    foreach (char ch in str)
    {
        if (char.IsWhiteSpace(ch))
        {
            words++;
        }
        if (char.IsPunctuation(ch))
        {
            words++;
        }

        //return number of words
        return words;
    }
}
4

3 に答える 3

8

文字列が空の場合、return コマンドは実行されません。

代わりにこれを使用してください:

//WordCount methos will count the spaces and punciation.
private int WordCount(string str)
{
    int words = 0; //the number of words counted

    //count the white spaces and punctuation.
    foreach (char ch in str)
    {
        if (char.IsWhiteSpace(ch))
        {
            words++;
        }
        if (char.IsPunctuation(ch))
        {
            words++;
        }
   }

   //return number of words
   return words;
}
于 2013-11-13T19:21:16.197 に答える
3

あなたのコードはforeachループ内から返されています。渡されたパラメータが の場合null、例外が発生します。空の文字列の場合、実行はループに入らず、エラーになります。

最初の反復後に返されるため、現在のメソッドも論理的に正しくなく、誤った結果が得られる可能性があります。return ステートメントはforeachループの外にある必要があります

于 2013-11-13T19:23:15.990 に答える
2

メソッドは int として宣言されています。つまり、値を返さなければなりません。コンパイラは、これが事実であるとは保証されていないと不平を言っています。具体的には、文字列が空の場合、foreach は入力されず、return ステートメントは実行されません。

別の注意として、最初の反復で強制的に戻ると、foreach は無意味になります。

于 2013-11-13T19:23:26.727 に答える