我无法显示保存在我创建的阵列中的数据
本文关键字:阵列 数据 创建 存在 显示 保存 | 更新日期: 2023-09-27 18:28:15
我是c#编码的初学者,我正在尝试创建一个为任何领域的学生保存name
、id
和group
的程序的示例。保存是可以的,但显示保存的内容是我的问题,它总是以给我一个处理错误结束。这是我的密码。非常感谢。
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];
}
}
正如您所说的
但显示保存的内容是我的问题
我可以假设问题就在这里(显示保存的东西的唯一方法):
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];
}
}
如果不是问题的话,我不能在很多事情上思考,因为你没有指定你得到的是什么样的错误
首先点击button 1
3次,读取并保存数据。然后单击button 2
以显示结果
此外,您应该使用screen.Text +=
来附加以前的数据。
我认为这样修改代码可以解决问题
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];
}
}
这里所做的只是,在循环中定义了一个新的变量int j
,而不是使用您定义的全局i
变量(稍后您将了解到这是一个错误,但现在不是问题所在)。
我得到一个错误:
"索引超出了数组的界限"。
for (i = 0; i < 3; i++)
{
screen.Text = "Name :" + z[i] + "'n ID: " + x[i] + "'nGroup : " + v[i];
}
当i==3时终止。因此,当您单击按钮1时会导致越界错误。
此外,单击按钮1 4x也会导致此错误
访问数组中的项目时,请记住验证索引值
if (i >= z.Length)
{
MessageBox.Show("Ran out of room in the array!");
}
我没有足够的信息来直接回答这个问题(请参阅其他评论),但我可以根据上面看到的代码提出一些建议。
首先,使用对象。由于名称、学生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。这使得学生负责格式化自己。
然后,您可以声明Student[3]的数组或List<学生>,后者将您带入集合,并允许您拥有任意数量的Student对象。
这将使您更深入地使用C#的面向对象特性。