class Program { static void Main(string[] args) { int i = 0; string strName = ""; string stId = ""; string ages = ""; Student[] stus = new Student[5]; Console.WriteLine("请输入学员信息:"); for (i = 0; i < stus.Length; i++) { Console.WriteLine("请输入第{0}个学员的姓名:", i + 1); stus[i] = new Student(); while (true) { Console.Write("姓名:"); strName = Console.ReadLine(); stus[i] = new Student(); if (stus[i].setStuName(strName)) { break; } else { Console.WriteLine("您输入的学员姓名不正确!"); } } while (true) { Console.Write("ID:"); stId = Console.ReadLine(); stus[i] = new Student(); if (stus[i].setStuId(stId)) { break; } else { Console.WriteLine("你输入的学号不正确!"); } } while (true) { Console.Write("年龄:"); ages = Console.ReadLine(); stus[i] = new Student(); if (stus[i].setStuAge(ages)) { break; } else { Console.WriteLine("你输入的年龄错误!"); } } } for (int x = 0; x < stus.Length; x++) { stus[x].showStuInfo(stus[x].stuId, stus[x].stuName, stus[x].stuAge); } } class Student { public int stuId; public string stuName; public int stuAge; public Student() { stuId = 0; stuName = ""; stuAge = 0; } /// <summary> /// 显示学员信息 /// </summary> public void showStuInfo(int _id, string _name, int _age) { Console.WriteLine("{0}+{1}+{2}", _id, _name, _age); } /// <summary> /// 设置学员ID /// </summary> /// <param name="_id">必须是小于100的正整数</param> /// <returns></returns> public bool setStuId(string _id) { int value = int.Parse(_id); if (value > 0 && value < 100) { stuId = value; return true; } else { return false; } } /// <summary> /// 设置学员姓名 /// </summary> /// <param name="_name">不能为空,不能为admin</param> /// <returns></returns> /// if (stus[i].setStuName(strName)) public bool setStuName(string _name) { if (_name == "" || _name == "admin") { return false; } else { stuName = _name; return true; } } /// <summary> /// 设置学员的年龄 /// </summary> /// <param name="_age">必须在18-60(含)之间</param> /// <returns></returns> public bool setStuAge(string _age) { int value = int.Parse(_age); if (value >= 18 && value <= 60) { stuId = value; return true; } else { return false; } } }
3 回答
萧十郎
TA贡献1815条经验 获得超13个赞
将三个while循环中的stus[i] =new Student(); 这句代码注释就行。
用new关键字创建对象时,都会重新开辟内存空间。每new一个对象就分配了一个不同的对象,假设i=0的这次循环中,伱总共给stus[0]分配了四次对象,相当于stus[0]=空对象;stus[0]=只有姓名的对象;stus[0]=只有Id的对象;stus[0]=只有年龄的对象;因为只有年龄的对象在最后,所以stus[0]=只有年龄的对象。
杨魅力
TA贡献1811条经验 获得超6个赞
你在每个输入项目的时候,都重新 new 一个 Student 对象,在第三次的时候,已经将原来的对象给替换了。
其实,最后,只有最后的那个 Student 对象,当然没有姓名和编号了。
将三个 while 中的 new 对象一行删掉吧。
- 3 回答
- 0 关注
- 365 浏览
添加回答
举报
0/150
提交
取消