C#中如何实现员工信息输入格式校验并提示错误?
解决员工信息输入格式验证问题
你的核心问题是没有提前验证输入的格式是否符合要求,直接强行拆分和转换会导致程序崩溃。我们可以通过分步验证的方式,在出现格式问题时给出明确提示,避免异常。
具体处理步骤:
- 先检查输入是否为空或全是空白字符
- 用逗号拆分输入后,确认是否刚好分成2个有效部分
- 验证第一部分能否转换成合法整数(员工级别)
- 确认第二部分(员工姓名)不为空
- 只有所有验证通过后,再执行职位判断;任何一步失败则直接显示错误提示
修改后的完整代码:
Console.Clear(); Console.WriteLine(@"请输入你的(员工级别, 员工姓名)。"); string? readResult = Console.ReadLine(); string title = ""; // 检查输入是否为空或全空白 if (string.IsNullOrWhiteSpace(readResult)) { Console.WriteLine("错误:输入不能为空,请按(员工级别, 员工姓名)格式输入"); return; } string info = readResult; // 拆分输入并检查是否为两个部分 var employeeInfo = info.Split(','); if (employeeInfo.Length != 2) { Console.WriteLine("错误:输入格式不正确,请用逗号分隔员工级别和姓名"); return; } // 验证员工级别是否为有效整数 string levelStr = employeeInfo[0].Trim(); if (!int.TryParse(levelStr, out int employeeLevel)) { Console.WriteLine("错误:员工级别必须是整数,请重新输入"); return; } // 验证员工姓名是否不为空 string employeeName = employeeInfo[1].Trim(); if (string.IsNullOrWhiteSpace(employeeName)) { Console.WriteLine("错误:员工姓名不能为空,请重新输入"); return; } // 格式验证通过,执行职位判断 switch (employeeLevel) { case > 400: title = "高级经理"; break; case > 300: title = "经理"; break; case > 200: title = "高级专员"; break; case > 100: title = "初级专员"; break; default: title = "专员"; break; } Console.WriteLine($"{employeeName},{title}");
关键代码说明:
string.IsNullOrWhiteSpace:比IsNullOrEmpty更严格,能识别输入全是空格的无效情况Split(',')后检查数组长度:确保输入有且仅有一个逗号,拆分出两个内容int.TryParse:安全转换整数,失败时返回false不会抛出异常,同时把成功结果存入变量Trim():去除内容前后空格,允许用户输入带空格的格式(比如"300, 张三"),提升体验- 每步验证失败后用
return终止程序,避免后续错误代码执行
内容的提问来源于stack exchange,提问作者Mónica Alípio
相关产品推荐
相关产品推荐

