在多行文本框中输入多行“姓名=成绩”格式的数据,要求输出成绩最高的学生的姓名。
代码如下:
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]里边是没有数据的。所以会显示索引超出了数组的界限。
我觉得在以后找错的时候,我们只需要设置个断点在出错的地方,看里边的数据怎么来的,这样会更有效率。
|
|
|