【问题标题】:how do i count the words in a string list我如何计算字符串列表中的单词
【发布时间】:2018-03-15 00:48:31
【问题描述】:

我经常遇到过载问题, 我已经查过了,但似乎没有什么像我的情况...... 我希望这里的人能帮助我。 我的代码示例如下所示。

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++;
        }            
    }
}

请帮助我,我的脚本的这一部分很重要... 感谢您的宝贵时间!

【问题讨论】:

  • 在这种情况下wordlist 是什么?
  • 哦,抱歉,wordlist 是一组预加载的单词,代码基本上需要将您输入的单词与它知道的单词匹配。感谢您的回复!
  • 抱歉,这是它允许的唯一问题,我检查了它建议的所有其他问题,但没有任何匹配项。基本上,当单词[i] 需要在其最后一个条目处停止时,它会不断过载。这就是问题所在......我尝试的函数是 for 函数中的计数和长度,并且都超过了 word[] 中的单词数量
  • int i = 0;我

标签: c# count overloading


【解决方案1】:

不应该是string[] words = s.Split(' ');

即使我们说您的words.Split(' ');,那么它也应该是string[] words = word 而不是string[]=word

要计算该数组中有多少单词,只需执行int howManyWords = words.Length;

另外,如果你想循环的次数与列表中的单词一样多,你应该这样做:

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

【讨论】:

  • 感谢您的回复!我试过这个,我仍然得到以下错误 System.ArgumentOutOfRangeException 而且它仍然在同一个字符串[] word[i]
  • 您在 Sam Marion 的评论中有答案。将&lt;= 更改为&lt;。看我的回答
【解决方案2】:

虽然您的问题非常不清楚(您至少应该发布您遇到的错误,这会使回答变得更加容易)您在 cmets 中清除了它。您得到的是索引超出范围异常。

你需要改变你的循环

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 而不是 1。length 属性将为您提供数组中元素的总数。当您到达最后一个索引时,i 的值将大于元素数,因为您从 0 开始计数。

您还需要更改 while 循环,因为那里发生了超出范围的异常。相同的问题,只是这次您添加了一个,使情况变得更糟。

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

将其更改为减号,使其永远不会超出范围。还将逻辑更改为 && 而不是 ||使用 or 当它找到匹配项时,它永远不会增加 ii 所以它会在一段时间内永远卡住。

您还想在找到匹配项后跳出循环。

【讨论】:

  • 感谢您的回复!我尝试了中间那个,我仍然得到以下错误 System.ArgumentOutOfRangeException 而且它仍然在同一个字符串[] word[i]
  • 为什么这是 ii != counter +1 不应该是 ii != counter - 1
  • 谢谢你的回复,我不记得我到底为什么写它,但它可以停止while循环。
  • 你可能会得到一个超出范围的异常,你也需要更改 ||在 while 循环中到 && 或者如果它确实找到匹配项,您将永远不会离开循环。
【解决方案3】:

好的,所以我发现了我的问题。那是因为 wordlist[] 中没有单词可供它阅读……我的错!

下次我应该只是放在预防方法中......

但是感谢你们的帮助!代码现在可以正常工作了!

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多