c# 越界问题
答案:2 悬赏:10 手机版
解决时间 2021-03-26 00:56
- 提问者网友:杀手的诗
- 2021-03-25 21:18
c# 越界问题
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-03-25 22:16
你这个写法比较奇怪,看你程序的意图象是从文本文件中读取每一行创建一个student放到数组中,因为不确定有多少行,建议你用List,另外那两处ReadLine和ReadToEnd()也有点看不懂,按你上面的代码,你实际只读了第一行,然后创建了多个完全一样的对象(全是基于info也就
是第一行的信息),另外for循环中的变量本身是自动累加的,不需要你去做i++,建议更改如下
//定义studentList
List studentList = new List();
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
this.openFileDialog1.Filter = "TextFiles(*.txt)|*.txt|WordDocument(*.doc)|*.doc|AllFiles(*.*)|*.*";
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
studentList.Clear();
while (sr.Peek() >= 0)
{
string info = sr.ReadLine();
if (info!=null && info.Trim() != "")
{
string[] sArray = info.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
if (sArray.Length >= 4)
{
Student stu = new Student();
stu.name = sArray[0];
stu.gender = sArray[1];
stu.major = sArray[2];
stu.hobby = sArray[3];
studentList.Add(stu);
}
}
}
}
current = 0;
this.ShowInfo();
}
}
是第一行的信息),另外for循环中的变量本身是自动累加的,不需要你去做i++,建议更改如下
//定义studentList
List
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
this.openFileDialog1.Filter = "TextFiles(*.txt)|*.txt|WordDocument(*.doc)|*.doc|AllFiles(*.*)|*.*";
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
studentList.Clear();
while (sr.Peek() >= 0)
{
string info = sr.ReadLine();
if (info!=null && info.Trim() != "")
{
string[] sArray = info.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
if (sArray.Length >= 4)
{
Student stu = new Student();
stu.name = sArray[0];
stu.gender = sArray[1];
stu.major = sArray[2];
stu.hobby = sArray[3];
studentList.Add(stu);
}
}
}
}
current = 0;
this.ShowInfo();
}
}
全部回答
- 1楼网友:由着我着迷
- 2021-03-25 22:48
studentList 定义在哪里呢追问初始化的时候就定义了ArrayList studentList = new ArrayList();追答如果只有上面这一句的话,studentList[i] 很明显会下标越界,因为studentList没有添加任何东西。可改成这样:
//Student stu = (Student)studentList[i];
Student stu = new Student();
string[] sArray = info.Split(',');
stu.name = sArray[0];
stu.gender = sArray[1];
stu.major = sArray[2];
stu.hobby = sArray[3];
studentList.add(stu);
//i++; //这个i++应该不要吧,for循环里面有了
//Student stu = (Student)studentList[i];
Student stu = new Student();
string[] sArray = info.Split(',');
stu.name = sArray[0];
stu.gender = sArray[1];
stu.major = sArray[2];
stu.hobby = sArray[3];
studentList.add(stu);
//i++; //这个i++应该不要吧,for循环里面有了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯