A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在多行文本框中输入多行“姓名=成绩”格式的数据,要求输出成绩最高的学生的姓名。
代码如下:
string[] lines = txtScore.Lines;       //Textbox的Lines属性
            string maxname = " ";
            int maxscore =-1;

            foreach (string line in lines)   //读取Lines里边的每一行
            {
                string[]remove=line.Split('='); //对每一行进行分割
                string name = remove[0];
                string strscore = remove[1];
                int score = Convert.ToInt32(strscore);
                if (score > maxscore)
                {
                    maxscore = score;
                    maxname = name;
                }               
            }
            MessageBox.Show(string.Format("第一名是{0},最高分为{1}", maxname, maxscore));

问题代码是: string strscore = remove[1]; 显示是索引超出了数组的界限

解决方法(由于前几天发帖子发错了地方,没人回复,不过最终还是找到了问题所在点。个人觉得把这个帖子跟大家共享一下,可以让初学者少走几步弯路,希望能帮到大家。让各位大神见笑了):
文本框中数据:第一行:tom=300 第二行:jerry=200 第三行:lucy=100 第四行:无意中键入了空格。而此时Lines里边会有这一行空的数据。然后用Split分割第四行数据,只能得到只有一个元素的数组,即分割得到的数组的长度为1,此时只有remove[0],所以,string strscore=remove[1]里边是没有数据的。所以会显示索引超出了数组的界限。
我觉得在以后找错的时候,我们只需要设置个断点在出错的地方,看里边的数据怎么来的,这样会更有效率。



)Z2JUU2YGS99N~~6Y2UX@PN.jpg (7.45 KB, 下载次数: 6)

当在文本框中输入图片中的内容的时候

当在文本框中输入图片中的内容的时候

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马