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

C#:int转short的方法及Console.Read()输入输出不符问题解析

输入与输出数值不一致的原因及解决办法

问题场景

输入数字“6”时,代码输出结果为54,相关代码如下:

{
    int intVal;
    short ShortVal;

    intVal = Console.Read();
    ShortVal = (short)intVal;

    Console.WriteLine("{0}", ShortVal);
}

原因分析

Console.Read()方法读取的是输入流中单个字符的ASCII码值,而非直接读取数字本身。数字字符“6”对应的ASCII码正好是54,所以最终输出的是这个码值,而非输入的数字6。

解决方法

有两种常用方式可以让输出与输入数值保持一致:

方法一:读取整行输入并转换为数值

使用Console.ReadLine()读取完整的输入行,再通过数值转换方法将字符串转为对应数字:

int intVal;
short shortVal;

// 读取整行输入
string input = Console.ReadLine();
// 尝试将输入字符串转为整数
if (int.TryParse(input, out intVal))
{
    shortVal = (short)intVal;
    Console.WriteLine("{0}", shortVal);
}
else
{
    Console.WriteLine("请输入有效的数字");
}

这种方式支持多位数输入,同时能处理输入无效的情况,更健壮。

方法二:转换ASCII码为对应数字

如果坚持使用Console.Read(),可以将读取到的ASCII码减去字符'0'的ASCII码('0'的ASCII码为48),得到实际数字:

int intVal;
short shortVal;

intVal = Console.Read();
// 通过ASCII码差值计算实际数字
shortVal = (short)(intVal - '0');
Console.WriteLine("{0}", shortVal);

注意:这种方式仅适用于输入单个数字字符的场景,无法处理多位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:54:24