You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 02:54:02