求大神解决 C#初级问题 C#中判断输入的字符串数字和字符的个数

这是窗体程序 点击确定后的执行代码窗体图 :
执行后错误提示是程序中 //后的内容
private void button1_Click(object sender, EventArgs e) { string Inputsting = Convert.ToString(txtinput); txtchar.Text = ""; txtnumber.Text = ""; int number=0; int charnumber=0; int i; for( i=0;i<= Inputsting.Length;i++) if(char.IsLetter(Inputsting[i])) //索引超出数组界限 { number++; } if(char.IsDigit(Inputsting[i])) { charnumber++; } txtnumber.Text = Convert.ToString(number); txtchar.Text = Convert.ToString(charnumber); }
最新回答
天生小仙女

2024-11-06 02:32:38

for(i=0;i<=Inputstring.Length;i++)
改为i<inputstring.Length;因为i=0开始,最大下标为inputstring.Length-1,所以当i=inputstring.Length时会出现越界错误。

另个不建议使用循环,因为字符串长度就是字符的个数!

数字可以使用Lambda表达式!

int num = inputstring.Count(_item => (char)_item >= '0' && (char)_item<='9');
这样即可计算相应的字符个数,具体的请查看lambda表达式。
紫夜雪舞

2024-11-06 01:47:46

for( i=0;i<= Inputsting.Length;i++)
这句有问题,应该是for( i=0;i< Inputsting.Length;i++)
当循环到i=Inputsting.Length时就超出数组界限了,数组索引从0开始的话只能到Inputsting.Length-1
我怕冷抱紧我

2024-11-06 09:46:03

for( i=0;i<= Inputsting.Length;i++)
改成
for( i=0;i< Inputsting.Length;i++)
因为索引最大等于长度-1
所以你会在等于的时候报错
星雪伊

2024-11-06 06:30:03

把错误贴上来吧。。还有, string Inputsting = Convert.ToString(txtinput);第一句的txtinput在哪里定义的,两个if的语句反过来了,,没必要 Convert.ToString,直接number.toString();就行