我经常遇到过载问题, 我查了一下,但似乎没有什么看起来像我的场景...... 我希望这里的人能帮助我。 我的代码示例如下所示。
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++;
}
}
}
请帮助我,我脚本的这一部分至关重要...... 谢谢你的时间!
答案 0 :(得分:1)
不应该是string[] words = s.Split(' ');
即使我们说您的word
是s.Split(' ');
,也应该是string[] words = word
而不是string[]=word
要计算该数组中的单词数量int howManyWords = words.Length;
此外,如果您想要循环循环次数与列表中的单词一样多次,您应该这样做:
for(int i = 0; i < words.Lenght; i++)
{
//Do your stuff
}
答案 1 :(得分:1)
虽然你的问题很不清楚(你应该发布你得到的错误,至少它会让你更容易回答)你在评论中将其清除了。你得到的是超出范围异常的索引。
您需要更改循环
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)
将其更改为减号,以便它永远不会超出范围。同时将逻辑更改为&amp;&amp;而不是||当它或找到一个匹配时,它永远不会增加ii,所以它会永远被卡住。
您还希望在找到匹配后突破循环。
答案 2 :(得分:0)
好的,所以我发现了我的问题。这是因为wordlist []中没有单词可供阅读...我的不好!
下次我应该采取预防措施......
但是谢谢你们的帮助!代码现在正常工作!