2017-10-03 3 views
-8

私は常に過負荷の問題に遭遇しています 私はそれを見ましたが、何も私のシナリオのように見えません... ここの人々が私を助けてくれると期待していました。 私のコードの例は次のとおりです。どのように文字列リスト内の単語を数えるのですか

string s = textbox.text; 
char[] delimiter = {' '}; 
string[] word = s.split(delimiter); //this gets a set of words from s.split 
for (int i = 0; i <= word.length; i++) //I also tried word.count() 
{ 
    int ii = 0; 
    int counter = wordlist.count; 
    bool test1 = false; 
    while (test1 == false || ii != counter +1) 
    { 
     if (word[i] == wordlist[ii]) //this is where it gets stuck. It wants to load more word[i] than what there are in the list... 
     { 
      //function gets preformed 
      test1 = true; 
     } 
     else 
     { 
      ii++; 
     }    
    } 
} 

はお時間をありがとうございました...私のスクリプトのこの部分は非常に重要である、私を助けてください!

+2

この文脈では 'wordlist'とは何ですか? –

+0

ああ、申し訳ありませんが、wordlistはあらかじめロードされた単語のセットです。コードは基本的に、あなたが入力した単語と、それが知っている単語を一致させる必要があります。 返信いただきありがとうございます! –

+3

[C#で単語の数を数える]の可能な複製(https://stackoverflow.com/questions/8784517/counting-number-of-words-in-c-sharp) – gunr2171

答えて

1

は、それは私達があなたのwords.Split(' ');であると言う場合でも、それはstring[] words = wordないstring[]=word

する必要があり、その配列内にあるどのくらいの単語カウントすることがちょうどint howManyWords = words.Length;

を行うstring[] words = s.Split(' ');

すべきではありませんまた、リスト内に単語がある回数だけループを繰り返したい場合は、次のようにします。

for(int i = 0; i < words.Lenght; i++) 
{ 
    //Do your stuff 
} 
+0

あなたの返信ありがとうございます! 私はこれを試しましたが、私はまだ次のエラーがあります System.ArgumentOutOfRangeException それはまだ同じ文字列[]にあります[私] –

+0

あなたはサム・マリオンのコメントで回答しています。 '<='を '<'に変更してください。私の答えを見てください –

1

あなたの質問は非常に不明ですが(少なくとも何かエラーが出てきたらそれははるかに簡単に答えるはずでした)、あなたはコメントでそれをクリアしました。あなたが得ているのは、範囲外の例外のインデックスです。 lengthプロパティは、あなたの総数を与える1.ない0で

あなたのループを変更する必要が

for (int i = 0; i <= word.length; i++) 

for (int i = 0; i < word.length; i++) // preferable 

または

for (int i = 0; i <= word.length - 1; i++) // not preferable 

に配列インデックスです配列内の要素の最後のインデックスに到達すると、0でカウントを開始したため、iの値が要素数より大きくなります。

範囲外の例外が発生しているため、whileループを変更する必要もあります。あなたがそれをさらに悪化させるために追加したのを除いて同じ問題です。

while (test1 == false && ii != counter - 1) 

範囲外にならないようにマイナスに変更します。また、ロジックを||の代わりに& &に変更してくださいまたはそれと一致するものが見つかった場合は、iiを増やすことはありません。その間、永遠に詰まってしまいます。

また、一致するものを見つけたらループから脱出することもできます。

+0

あなたの返信ありがとう! 私は中間のものを試しましたが、私はまだ次のエラーがあります System.ArgumentOutOfRangeException それはまだ同じ文字列にあります[] word [i] –

+0

これはなぜですか!カウンター - 1 –

+0

あなたの返事をありがとう、私はそれを書いた理由を正確に覚えていないが、それはwhileループを停止するために動作します。 –

0

私の問題が見つかりました。それはそれが...私の悪い読書のための単語リスト[]に単語がなかったためでした!

私はちょうど...予防法に

を次の時間を置くしかし、あなた、あなたの援助のためのみんなに感謝しなければなりません!コードは今のように動作しています!

関連する問題