我无法显示保存在我创建的数组中的数据

时间:2015-12-28 21:32:09

标签: c#

我是c#编码的初学者,我正在尝试创建一个程序,为任何领域的学生保存nameidgroup。保存是可以的,但显示保存的是我的问题,它总是通过给我一个处理错误而结束。这是我的代码。非常感谢你。

    public static string [] z, x, v,s;
    public static int i = 0;
    public Form1()
    {
        InitializeComponent();
        z = new string[3];
        x = new string[3];
        v = new string[3];


    }

    private void button1_Click(object sender, EventArgs e)
    {
        if(name.Text==string.Empty)
        {
            errorProvider1.SetError(name, "Enter Name");
            return;
        }
        if(id.Text==string.Empty)
        {
            errorProvider1.SetError(id, "Enter Student Id");
            return;
        }
        if(group.Text==string.Empty)
        {
            errorProvider1.SetError(group, "Enter Student Group");
        }
        z[i] = name.Text;
        x[i] = id.Text;
        v[i] = group.Text;
        i++;
        saved.Text = "Saved";
        saved.ForeColor = Color.Green;
        timer1.Start();
    }
    public void clear()
    {
        name.Text = id.Text = group.Text = " ";
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        saved.Text = " ";
        clear();
        timer1.Stop();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        for (i = 0; i < 3;i++ )
        {
            screen.Text = "Name :" + z[i] + "\n ID: " + x[i] + "\nGroup : " + v[i];
        }
    }

5 个答案:

答案 0 :(得分:0)

正如你所说

  

但显示保存的是我的问题

我可以假设问题在这里(显示已保存内容的唯一方法):

private void button2_Click(object sender, EventArgs e)
{
    for (i = 0; i < 3;i++ )
    {
        screen.Text = "Name :" + z[i] + "\n ID: " + x[i] + "\nGroup : " + v[i];
    }
}

您在 for 循环中使用 i ,并在班级中声明 i 来控制学生的数量,尝试使用其他按钮事件,如 j

private void button2_Click(object sender, EventArgs e)
{
    for (j = 0; j < 3;j++ )
    {
        screen.Text = "Name :" + z[j] + "\n ID: " + x[j] + "\nGroup : " + v[j];
    }
}

如果不是问题我在很多方面都无法思考,因为你没有指明你得到的是什么样的错误

答案 1 :(得分:0)

首先点击button 1 3次以阅读并保存数据。然后点击button 2以显示结果 此外,您应该使用screen.Text +=附加以前的数据。

答案 2 :(得分:0)

我认为像这样修改你的代码会解决你的问题

private void button2_Click(object sender, EventArgs e)
{
    for (int j = 0; j < 3; j++)
    {
        screen.Text = "Name :" + z[j] + "\n ID: " + x[j] + "\nGroup : " + v[j];
    }
}

这里所做的就是不使用您定义的全局i变量(以后您将会学到错误,但现在不是问题) )在循环中定义了一个新变量int j

答案 3 :(得分:0)

我收到错误:

  

&#34;索引超出了数组的范围&#34;。

    for (i = 0; i < 3; i++)
    {
        screen.Text = "Name :" + z[i] + "\n ID: " + x[i] + "\nGroup : " + v[i];
    }

当i == 3时终止。因此,当您单击button1时会导致越界错误 此外,单击button1 4x也会导致此错误。

请记住在访问数组中的项目时验证索引值

    if (i >= z.Length)
    {
        MessageBox.Show("Ran out of room in the array!");
    }

答案 4 :(得分:-1)

我没有足够的信息直接回答这个问题(请参阅其他评论),但我可以根据上面看到的代码提出一些建议。

首先,使用对象。由于名称学生ID 学生组似乎都是相关的,因此请创建一个包含属性的对象:

public class Student
{
    public String Name { get; set; }
    public String Id { get; set; }
    public String Group { get; set; }

    public override String ToString()
    {
         // fill in
    }
}

使用您希望根据对象内容生成字符串的任何代码填写ToString。这使学生负责格式化。

然后你可以声明一个学生[3] 列表&lt; Student&gt; 的数组,后者会将你带入集合并让你拥有任意数量的学生对象。

这将使您进一步使用C#的面向对象特性。