编写第二个C#程序时出现编译错误,疑似库、转换或命名空间问题
问题排查与解决步骤
核心错误确认
你的代码存在2个可触发编译/运行报错的问题:
- 手机号存储类型错误:
int(即Int32)取值范围为-2147483648 ~ 2147483647,11位及以上的手机号远超过该取值上限,用Int32.Parse转换长手机号会触发溢出错误,部分编译器会提前给出类型范围风险告警。 - 空输入未处理:
Console.ReadLine()在用户取消输入等场景下会返回null,直接传入Parse方法会触发空引用异常。
修复后可运行代码
using System; namespace MagpantayUserInfoProg { class UserInfo { static void Main() { // 手机号改用string存储,避免长度溢出,同时兼容带+、-等特殊格式的号码 string name, gender, contact; int age; Console.Write("Name: "); // 空合并运算符处理null返回,默认赋值为空字符串 name = Console.ReadLine() ?? ""; Console.Write("Gender: "); gender = Console.ReadLine() ?? ""; Console.Write("Age: "); // 改用TryParse处理非法输入,避免用户输入非数字时程序直接崩溃 while (!int.TryParse(Console.ReadLine(), out age) || age < 0 || age > 120) { Console.Write("输入的年龄不合法,请重新输入:"); } Console.Write("Mobile Number: "); contact = Console.ReadLine() ?? ""; // 输出结果 Console.WriteLine("Name: {0}", name); Console.WriteLine("Gender: {0}", gender); Console.WriteLine("Age: {0}", age); Console.WriteLine("Mobile Number: {0}", contact); Console.ReadLine(); } } }
效果验证
修改后代码可直接编译运行,既解决了类型溢出报错,也兼容各类手机号格式,同时对用户非法输入做了容错处理。
内容的提问来源于stack exchange,提问作者user15166060
相关产品推荐
相关产品推荐

