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

如何遍历数字的每一位?求数字反转及提取偶数位的C#程序帮助

问题分析与解决方案

你的代码存在几个核心问题,导致无法实现「反转数字+输出每一位偶数」的需求:

  • 数组使用错误:你把反转后的完整数字存入数组,而非拆分每一位,因此foreach循环只会输出整个反转数,无法逐个处理单一位数。
  • 缺少偶数判断逻辑:代码里完全没有对数字的每一位进行奇偶校验的步骤,自然无法筛选出偶数位。
  • 整数溢出风险:10位数字的最大值是9999999999,远超int类型的取值范围(约-21亿到21亿),会直接触发溢出错误。
  • 输入无合法性校验:直接用int.Parse处理输入,若用户输入非数字内容会直接抛出异常。

下面是修正后的完整代码,同时实现两个需求:

do
{
    Console.WriteLine("请输入一个10位数字:");
    // 用long适配10位数字范围,同时校验输入合法性
    if (!long.TryParse(Console.ReadLine(), out long number))
    {
        Console.WriteLine("输入无效,请输入有效的数字!");
        continue;
    }

    long reverse = 0;
    long temp = number; // 保留原数字,避免操作修改原变量

    // 执行数字反转逻辑
    while (temp > 0)
    {
        long digit = temp % 10;
        reverse = reverse * 10 + digit;
        temp = temp / 10;
    }

    Console.WriteLine("反转后的数字:" + reverse);
    Console.WriteLine("反转数字中的偶数位:");

    // 遍历反转后的数字,提取每一位偶数
    long tempReverse = reverse;
    while (tempReverse > 0)
    {
        long digit = tempReverse % 10;
        if (digit % 2 == 0)
        {
            Console.WriteLine(digit);
        }
        tempReverse = tempReverse / 10;
    }

} while (true);

关键修改说明:

  • 替换为long类型:解决10位数字超出int范围的溢出问题。
  • 添加输入校验:用long.TryParse判断输入是否合法,非法输入时提示并重新进入循环。
  • 拆分反转数字的每一位:通过%10和/10逐个提取反转后数字的单一位数,再判断是否为偶数。
  • 保留原输入数字:用临时变量temp处理反转逻辑,避免修改原输入值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:54:26