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的正整數(shù)</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條經(jīng)驗 獲得超13個贊
將三個while循環(huán)中的stus[i] =new Student(); 這句代碼注釋就行。
用new關(guān)鍵字創(chuàng)建對象時,都會重新開辟內(nèi)存空間。每new一個對象就分配了一個不同的對象,假設i=0的這次循環(huán)中,伱總共給stus[0]分配了四次對象,相當于stus[0]=空對象;stus[0]=只有姓名的對象;stus[0]=只有Id的對象;stus[0]=只有年齡的對象;因為只有年齡的對象在最后,所以stus[0]=只有年齡的對象。

楊魅力
TA貢獻1811條經(jīng)驗 獲得超6個贊
你在每個輸入項目的時候,都重新 new 一個 Student 對象,在第三次的時候,已經(jīng)將原來的對象給替換了。
其實,最后,只有最后的那個 Student 對象,當然沒有姓名和編號了。
將三個 while 中的 new 對象一行刪掉吧。
- 3 回答
- 0 關(guān)注
- 377 瀏覽
添加回答
舉報
0/150
提交
取消