这是窗体程序 点击确定后的执行代码窗体图 :执行后错误提示是程序中 //后的内容 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); }
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表达式。
for( i=0;i<= Inputsting.Length;i++)这句有问题,应该是for( i=0;i< Inputsting.Length;i++)当循环到i=Inputsting.Length时就超出数组界限了,数组索引从0开始的话只能到Inputsting.Length-1
把错误贴上来吧。。还有, string Inputsting = Convert.ToString(txtinput);第一句的txtinput在哪里定义的,两个if的语句反过来了,,没必要 Convert.ToString,直接number.toString();就行