C#调用自定义Mosqactivity类无预期输出问题求助
C# 蚊子活动状态检测程序无输出问题排查
核心错误点
- 输入值未正确接收:
Console.ReadLine()读取的用户输入为字符串类型,代码既没有将输入转换为整数,也没有赋值给day变量,day始终为初始值0,无法匹配任何预设的年龄判断条件 - 返回结果被连续覆盖:代码依次调用4个状态判断方法时,每次都直接对
result重新赋值,前序方法返回的有效结果会被后续方法返回的空字符串覆盖 - 无兜底逻辑:所有状态方法仅对固定年龄做等值判断,传入年龄不匹配时直接返回空字符串,无默认提示
- 程序无暂停逻辑:输出语句执行完成后会立刻执行
return 0退出进程,控制台窗口瞬间关闭,即使有输出用户也无法看到
修复后完整代码
public class Mosqactivity { public string Mating(int age) { string a = ""; if (age == 12) { a = "mosquito is in mating"; } return a; } public string Blood(int age) { string b = ""; if (age == 13 || age == 14) { b = "Searching blood"; } return b; } public string Resting(int age) { string c = ""; if (age == 15 || age == 16 || age == 17) { c = "Resting"; } return c; } public string Layeggs(int age) { string d = ""; if (age == 18 || age == 23 || age == 28) { d = "Lay Eggs"; } return d; } } class Program { public static int Main(string[] args) { int day = 0; Mosqactivity act = new Mosqactivity(); string result = ""; Console.WriteLine("Enter a number \n"); // 读取用户输入并做合法性校验 string input = Console.ReadLine(); if (!int.TryParse(input, out day)) { Console.WriteLine("请输入有效的整数年龄"); Console.ReadKey(); return 0; } // 按年龄区间顺序匹配状态,匹配到有效结果后不再覆盖 result = act.Mating(day); if (string.IsNullOrEmpty(result)) result = act.Blood(day); if (string.IsNullOrEmpty(result)) result = act.Resting(day); if (string.IsNullOrEmpty(result)) result = act.Layeggs(day); // 无匹配结果时的兜底提示 if (string.IsNullOrEmpty(result)) result = "当前年龄无对应活动状态"; Console.WriteLine(result); // 等待用户按键后再退出,避免窗口直接关闭 Console.ReadKey(); return 0; } }
运行效果
运行程序后输入对应年龄即可得到预期输出:
- 输入12:输出 mosquito is in mating
- 输入13或14:输出 Searching blood
- 输入15、16、17:输出 Resting
- 输入18、23、28:输出 Lay Eggs
- 输入其他值:输出 当前年龄无对应活动状态
内容的提问来源于stack exchange,提问作者Celina
相关产品推荐
相关产品推荐

