C#入门问题:如何实现基于院系的荣誉学生GPA判定规则
基于院系调整荣誉学生判定逻辑的C#实现修改
针对需求,我们需要修改IsHonor方法,结合院系信息做分支判定,同时修正GPA类型以支持小数阈值(比如3.5)。以下是修改后的完整代码:
using System; namespace Denemee { internal class Program { static void Main(string[] args) { Student student1 = new Student("Oguz", "Engineering", 4.0); Student student2 = new Student("i2", "Arc", 2.0); Student student3 = new Student("Alice", "Arc", 3.5); Student student4 = new Student("Bob", "Engineering", 2.9); Console.ReadLine(); } public class Student { public string name; public string dept; public double gpa; // 改为double类型,支持小数GPA public Student(string name, string dept, double gpa) { this.name = name; this.dept = dept; this.gpa = gpa; Console.WriteLine($"{name} is {(IsHonor() ? "" : "not ")}honor student"); } public bool IsHonor() { // 忽略大小写判断院系,避免输入格式问题 if (string.Equals(dept, "Engineering", StringComparison.OrdinalIgnoreCase)) { return gpa >= 3.0; } else if (string.Equals(dept, "Arc", StringComparison.OrdinalIgnoreCase)) { return gpa >= 3.5; } // 其他院系可在此添加自定义规则,当前默认不满足 return false; } } } }
关键改动说明:
- GPA类型修正:将
gpa字段从int改为double,因为实际GPA多为小数,且建筑系的3.5阈值无法用整数存储。 - 院系分支判定:在
IsHonor方法中根据院系设置不同GPA阈值:- 工程系学生GPA≥3.0即符合荣誉学生标准
- 建筑系学生需要GPA≥3.5才符合
- 鲁棒性优化:使用
StringComparison.OrdinalIgnoreCase比较院系名称,避免因输入大小写(如"engineering"或"ENGINEERING")导致判断错误。 - 输出简化:用三元运算符简化控制台输出逻辑,代码更简洁。
内容的提问来源于stack exchange,提问作者oguzkr
相关产品推荐
相关产品推荐

