C#如何验证用户输入整数,通过类属性ID查询匹配Worker实例
问题原因
- 你提供的
GetWorkerByID方法存在基础语法错误:返回值类型声明为Department但实际返回Worker实例,方法末尾的闭合括号错写为开括号{,会直接触发编译报错。 - 循环逻辑判断符使用错误:原代码使用
&&(逻辑与),意味着只有「输入不是整数 同时 输入ID不存在」才会触发重试,只要满足其中一个条件就会跳出循环,完全不符合需求,应替换为||(逻辑或)。 - 校验逻辑顺序错误且状态未更新:
isInt仅在循环外计算了一次,循环内读取新输入后没有重新校验格式;且在输入不是整数的场景下,仍然直接调用int.Parse(input),必然会抛出格式异常。
修复方案
首先修正GetWorkerByID方法:
// 修正返回值类型和方法闭合括号 public Worker GetWorkerByID (int id) { foreach (Worker worker in Workers) { if (worker.ID == id) return worker; } return null; }
再修改输入校验逻辑,拆分格式校验和存在性校验,避免异常同时可以输出更明确的错误提示:
Worker targetWorker = null; while (targetWorker == null) { Console.Write("请输入Worker ID:"); string input = Console.ReadLine(); // 先校验是否为合法整数 if (!int.TryParse(input, out int inputId)) { Console.WriteLine("输入格式错误,请输入数字类型的ID"); continue; } // 格式合法后再查询ID是否存在 targetWorker = Data.GetWorkerByID(inputId); if (targetWorker == null) { Console.WriteLine("输入的ID不存在,请重新输入"); } } // 循环结束后targetWorker即为合法的匹配结果
内容的提问来源于stack exchange,提问作者Rookie
相关产品推荐
相关产品推荐

