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

如何在C#中将用户输入转为int类型并处理非法输入?

解决C#中用户输入转整数并处理无效输入的问题

你遇到的问题根源是Console.Read()只读取单个字符的ASCII编码值,所以输入数字字符会返回对应的ASCII码(比如'1'对应49),而且输入后的换行符会被后续的Console.Read()读取,导致第二个输入直接拿到换行的ASCII码13。

要实现正确的整数转换、错误抛出,同时让转换后的值能参与数学运算,可以按以下方式修改代码:

基础实现(直接抛出异常)

使用Console.ReadLine()读取整行输入,再用int.Parse()转换——当输入不是有效整数时,int.Parse()会自动抛出FormatException,符合你需要的错误抛出需求:

Console.WriteLine("Please type number 1.");
string input1 = Console.ReadLine();
int num1 = int.Parse(input1);
Console.WriteLine(num1);

Console.WriteLine("Please type number 2.");
string input2 = Console.ReadLine();
int num2 = int.Parse(input2);
Console.WriteLine(num2);

// 测试数学运算
int sum = num1 + num2;
Console.WriteLine($"Sum: {sum}");

如果用户输入非数字文本(比如"abc"),这段代码会直接抛出FormatException,满足你的错误抛出要求。

带异常捕获的友好提示版本

如果需要在出错时给用户提示而不是直接崩溃,可以添加异常捕获:

try
{
    Console.WriteLine("Please type number 1.");
    int num1 = int.Parse(Console.ReadLine());
    Console.WriteLine(num1);

    Console.WriteLine("Please type number 2.");
    int num2 = int.Parse(Console.ReadLine());
    Console.WriteLine(num2);

    int sum = num1 + num2;
    Console.WriteLine($"Sum of two numbers: {sum}");
}
catch (FormatException)
{
    Console.WriteLine("错误:输入不是有效的整数,请输入数字。");
}
catch (ArgumentNullException)
{
    Console.WriteLine("错误:输入不能为空。");
}

关键点说明

  • Console.ReadLine():读取用户输入的一整行内容(直到按下回车),返回完整的字符串,避免了单个字符读取的问题。
  • int.Parse():将字符串转换为整数,只有当输入是有效整数格式时才成功,否则抛出异常。
  • 转换后的int变量可以直接参与加减乘除等数学运算,完全满足你的需求。

内容的提问来源于stack exchange,提问作者CodingFox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:33:14