我的想法是在 TextBoxWord 中输入一个单词,并将另一个单词放入另一个文本框 textBoxLitera 并接收一些 textBoxLitera.text 我的 TextBoxWord.text 中的字词。 该程序给了我一个很好的答案,但抛出异常
索引和长度必须引用字符串中的位置。参数名称长度。
namespace Literki
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLitery_Click(object sender, EventArgs e)
{
int LetterCount = 0;
string letter = "";
string text = TextBoxWord.Text;
string wyr = textBoxLitera.Text;
int w = wyr.Length;
for (int i=0;i<text.Length;i++)
{
try
{
letter = text.Substring(i, w);
}
catch (ArgumentOutOfRangeException f)
{
MessageBox.Show(f.Message);
}
if (letter == textBoxLitera.Text)
LetterCount++;
}
MessageBox.Show(LetterCount.ToString());
}
}
}
我在这里做错了什么? (对不起我的语言,这是我的第一篇帖子) 谢谢你的帮助!
答案 0 :(得分:0)
如果i
位于字符串的末尾,并且您尝试子字符串w
字符(其中w > 1
),则会失败。
例如,对于单词“four”,最大索引为3("Four"[3]
返回“r”)。让我们看看当我们尝试长度&gt;时会发生什么。字符串末尾为0。
"Four".Substring(3, 4) // throws an exception
"Four".Substring(3, 1) // returns "r"
您需要确保:
w
不会超过text
的长度。这将永远抛出异常。text
的末尾。一种方法是将for循环的条件更改为i <= text.Length - w
答案 1 :(得分:0)
实际上条件应该是
for (int i=0;i<text.Length -w+1;i++)