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

C#实现栈时Display方法输出整数ASCII值的问题

解决C#栈Display方法输出整数为ASCII值的问题

这问题我之前也踩过坑!核心原因要么是你存进去的数值本身就不对,要么是输出的时候做了多余的类型转换,咱们一步步排查:

先定位问题根源

你说存的是System.Int32类型的3,但输出是51——51刚好是字符'3'的ASCII码值。这说明两种可能:

  • 你以为自己存的是整数3,实际存的是字符'3'的ASCII值51
  • 你存的确实是3,但Display方法里把它转换成了字符再取ASCII码输出

对应的解决方案

1. 检查元素添加逻辑

如果是从控制台输入获取数值,别直接把输入的字符转成int(这会得到ASCII码),要用int.Parse或int.TryParse解析字符串:

// ✅ 正确的添加方式
string input = Console.ReadLine();
if (int.TryParse(input, out int value))
{
    yourStack.Push(value); // 这里存的是真正的整数3
}
else
{
    Console.WriteLine("请输入有效的整数");
}

// ❌ 错误的添加方式(会导致存ASCII值)
char inputChar = Console.ReadKey().KeyChar;
int value = (int)inputChar; // 输入'3'会得到51,而不是整数3
yourStack.Push(value);

2. 检查Display方法的输出逻辑

确保你直接输出存储的int值,不要做多余的转换:

// ✅ 正确的Display方法
public void Display()
{
    foreach (var ele in stackElements)
    {
        Console.WriteLine(ele.value); // 直接输出int,3就会显示3
    }
}

// ❌ 错误的方式(会把3转成51输出)
public void Display()
{
    foreach (var ele in stackElements)
    {
        // 错误地把int转成字符再取ASCII码
        char charValue = char.Parse(ele.value.ToString());
        Console.WriteLine((int)charValue); // 3→"3"→'3'→输出51
    }
}

快速验证方法

你可以在Display里加一行详细输出,确认存储的数值和类型:

Console.WriteLine($"存储的值:{ele.value},类型:{ele.value.GetType()}");
  • 如果输出是存储的值:51,类型:System.Int32:问题在添加逻辑,你存的就是51
  • 如果输出是存储的值:3,类型:System.Int32但显示的是51:问题在输出逻辑的多余转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:36:51