我是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];
}
}
答案 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#的面向对象特性。