C# 如何将我的姓名和性别变量放入数组中?

C# 如何将我的姓名和性别变量放入数组中?,c#,C#,我正在尝试制作一个学生记录应用程序,我能够从文本文件中分离姓名和性别,但是当我尝试将它们放入数组时,数组总是显示为空。addStudent方法在我单独尝试时有效 StudentList list = new StudentList(); string name = ""; string gender = ""; string line = ""; char[] selected = line.ToCharArray(

我正在尝试制作一个学生记录应用程序,我能够从文本文件中分离姓名和性别,但是当我尝试将它们放入数组时,数组总是显示为空。addStudent方法在我单独尝试时有效

        StudentList list = new StudentList();
        string name = "";
        string gender = "";
        string line = "";
        char[] selected = line.ToCharArray();

        openFileDialog1.ShowDialog();
        string file = openFileDialog1.FileName;

        StreamReader sr = new StreamReader(file);


        while ((line = sr.ReadLine()) != null)
        { 
            studentList.Items.Add(line);

            for (int i = 0; i < selected.Length; i++)
            {
                if (selected[i] != '(')
                {
                    name += selected[i];

                }

                else if (selected[i] == '(')
                {
                    gender += selected[i + 1];
                    break;
                }
                Student student = new Student();

                student.setName(name);
                student.setGender(gender);

                list.addStudent(student);
            }
        }
StudentList=newstudentlist();
字符串名称=”;
字符串性别=”;
字符串行=”;
char[]selected=line.ToCharArray();
openFileDialog1.ShowDialog();
string file=openFileDialog1.FileName;
StreamReader sr=新的StreamReader(文件);
而((line=sr.ReadLine())!=null)
{ 
学生列表。项目。添加(行);
对于(int i=0;i
这是我根据名称和性别排列变量的另一个类(不想更改此代码)

班级学生
{
私有字符串名称;
私人字符串性别;
私人日期时间出生日期;
公立学生()
{
name=null;
性别=零;
birthDate=DateTime.Now;//默认设置为当前日期
}
公共void集合名(字符串n)
{
name=n;
}
公共字符串getName()
{
返回名称;
}
公共无效设置性别(字符串g)
{
性别=g;
}
公共字符串getGender()
{
返回性别;
}
公共无效setBirthDate(日期时间bd)
{
出生日期=bd;
}
public DateTime getBirthDate()
{
返回出生日期;
}
}
班级学生名单
{
私立学生[]名单;
私立国际学生;
私有int-maxNum;
公立学生名单()
{
maxNum=300;
列表=新学生[maxNum];
numStudents=0;
}
公立学生getStudent(整数索引)
{
学生ret=null;
尝试
{
ret=列表[索引];
}
捕获(例外情况除外)
{
MessageBox.Show(“发生异常:+ex.Message”);
}
返回ret;
}
公立学校学生(学生s)
{
bool-ret=假;
if(numStudents
您需要将
字符串名称=”;
字符串性别=”;
selected=line.tocharray();
放入
while
循环中。此外,您还应该在
for
循环的
外部创建
Student
对象

StudentList=新建StudentList()


像这样的东西应该可以做到(我没有编译它,所以可能会有小错误):


请提供一个输入文件结构的示例。您可能可以按字符分割一行,而不是在一行中循环字符。这应该是一个windowsform应用程序,StudentList=new StudentList();用于创建一个已经有另一个类的数组。-Lamatof示例:Bob(M)Mary(F)Kate Jones(F)-RokXif在((line=sr.ReadLine())!=null时,如果我在中移动字符串行,则此操作将不起作用它不断触发我的消息框,通知我数组的限制。限制是300。可疑的是它将每个字母添加到数组中。你能用
StudentList
定义更新你的帖子吗?是的,我只是想看看add方法是如何工作的?你
add
方法很好,唯一的问题是你应该ld确保您的文件包含的行数不超过300行,并且在
for
循环之外调用
add
方法
 class Student
{
    private string name;
    private string gender;
    private DateTime birthDate;

    public Student()
    {
        name = null;
        gender = null;
        birthDate = DateTime.Now; // default to set to current date
    }

    public void setName(string n)
    {
        name = n;
    }

    public string getName()
    {
        return name;
    }

    public void setGender(string g)
    {
        gender = g;
    }

    public string getGender()
    {
        return gender;
    }

    public void setBirthDate(DateTime bd)
    {
        birthDate = bd;
    }

    public DateTime getBirthDate()
    {
        return birthDate;
    }

}

class StudentList
{
    private Student[] list;
    private int numStudents;
    private int maxNum;

    public StudentList()
    {
        maxNum = 300;
        list = new Student[maxNum];   
        numStudents = 0;
    }

    public Student getStudent(int index)
    {
        Student ret = null;
        try
        {
            ret = list[index];
        }
        catch (Exception ex)
        {
             MessageBox.Show("Exception has occurred: " + ex.Message);
        }

        return ret;
    }

    public bool addStudent(Student s)
    {
        bool ret = false;

        if (numStudents < maxNum-1 )
        {
            list[numStudents] = s;
            numStudents++;

            ret = true;
        }
        else
        {
            MessageBox.Show("Maximum Students exceeded");

        }

        return ret;
    }

    public int getNumStudents()
    {
        return numStudents;
    }

    public void clear()
    {
        for (int i = 0; i < numStudents; i++)
            list[i] = null; // set to null

        numStudents = 0;

    }

    public Student findStudent(string name)
    {
        Student ret = null;

        for (int i = 0; i < numStudents; i++ )
        {
            Student currentStudent = list[i];

            if (currentStudent.getName() == name)
            {
                ret = currentStudent;
                break;
            }
        }

        return ret;
    }

}
openFileDialog1.ShowDialog();
string file = openFileDialog1.FileName;

StreamReader sr = new StreamReader(file);

string line = "";
while ((line = sr.ReadLine()) != null)
{ 

    string name = "";
    string gender = "";

    char[] selected = line.ToCharArray();
    for (int i = 0; i < selected.Length; i++)
    {
        if (selected[i] != '(')
        {
            name += selected[i];

        }

        else if (selected[i] == '(')
        {
            gender += selected[i + 1];
            break;
        }

    }

    Student student = new Student();

    student.setName(name);
    student.setGender(gender);

    list.addStudent(student);
    //Add student objet rather than line string
    studentList.Items.Add(student);
}
public override string ToString()
{
   return name + "("+ gender+")";
}
    StudentList list = new StudentList();
    string line = "";

    openFileDialog1.ShowDialog();
    string file = openFileDialog1.FileName;

    StreamReader sr = new StreamReader(file);

    while ((line = sr.ReadLine()) != null)
    { 
        string[] lineStudents = line.Split(')');

        foreach(string lineStudent in lineStudents)
        {
            Student student = new Student();
            string[] studentProps = lineStudent.Split('(');
            student.setGender(studentProps[1]);
            student.setName(studentProps[0].Trim());
            list.addStudent(student);

        }
    }