C#调用CreateStudentList方法未触发学生信息输入提示是什么原因
错误原因
你的代码调用逻辑没有问题,问题出在CreateStudentList方法的循环初始条件设置错误:
你在方法内将控制循环的变量r初始化为空字符串"",而while循环的触发条件是r == "Y",第一次判断时条件就不成立,所以循环内的输入逻辑完全不会执行,方法直接返回了空列表,自然没有输入流程触发。
修复方案
推荐使用do-while循环改写逻辑,保证至少执行一次输入操作,符合常规使用场景:
static List<Student> CreateStudentList() { List<Student> studentlist = new List<Student>(); Student objStudent; string r; // 先执行一次输入逻辑,再判断是否继续 do { Console.Write("Enter name:"); string n = Console.ReadLine(); Console.WriteLine("Enter GPA:"); float g = float.Parse(Console.ReadLine()); objStudent = new Student(n, g); studentlist.Add(objStudent); Console.Write("Do you want to continue? (Y/N): "); r = Console.ReadLine()?.Trim().ToUpper() ?? ""; } while (r == "Y"); return studentlist; }
如果你想继续使用while循环,只需将r的初始值改为"Y"即可:
string r = "Y"; while (r == "Y") { // 原有逻辑不变 }
可选优化点
- 输入判断时添加
ToUpper()可以兼容用户输入小写y的场景 - 可以增加输入合法性校验,避免GPA输入非数字时程序崩溃
内容的提问来源于stack exchange,提问作者Beginnercoder
相关产品推荐
相关产品推荐

