C#如何仅读取控制台输入的首个整数值并判断手机号首字符
核心修改思路
不要直接将整行输入转为整数,先保留字符串格式取首字符再做校验,同时避免超长手机号转int溢出的问题。你原来注释的StreamReader相关逻辑完全不需要,直接操作字符串即可,无需额外调用IO流。
修改后完整代码
Console.WriteLine("enter your phone n0."); // 先读取输入为字符串,做基础有效性校验 string phoneInput = Console.ReadLine()?.Trim() ?? string.Empty; if (string.IsNullOrEmpty(phoneInput) || !char.IsDigit(phoneInput[0])) { Console.WriteLine("输入的手机号格式无效"); return; // 无效输入处理逻辑可根据自身需求调整 } // 取首字符转成数字 int firstNum = int.Parse(phoneInput[0].ToString()); Console.WriteLine("\n\n\n\n"); if (firstNum == 3 || firstNum ==4 || firstNum ==5) { // 原有业务逻辑,注意bred、startx、hoj、top变量需提前定义赋值 for (int i = 0; i < bred; i++) { Console.SetCursorPosition(startx + i, hoj / 2); Console.Write(top); } }
可选简化写法
如果用的是C# 9.0及以上版本,可以直接判断字符,省去数字转换步骤:
// 直接判断首字符即可,不需要转int if (phoneInput[0] is '3' or '4' or '5') { // 业务逻辑 }
额外注意事项
- 手机号通常为11位纯数字,可根据需求自行补充长度校验、全字符数字校验等逻辑
- 不要将完整手机号直接转int,11位数字已经超过int类型的最大存储上限,会直接触发转换报错
内容的提问来源于stack exchange,提问作者Coral
相关产品推荐
相关产品推荐

