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

C#使用do-while循环计算输入数字乘积的代码问题求解

问题分析

你现有代码的bug来自执行顺序的设计错误:第一次输入在循环外读取后,进入do-while循环体时没有做终止符判断,就直接把输入内容转成整数参与乘法运算。如果首次输入是x,代码会尝试把字符串"x"转为整数,要么抛出格式异常,要么完全走不到终止判断的分支,自然实现不了首次输x返回1的要求。

修复方案

调整循环内的执行顺序,把输入读取、终止判断的逻辑全部收拢到循环内部,利用do-while先执行一次循环体的特性,刚好匹配需求:

  • 初始乘积值保持int product = 1,作为无任何有效数字输入时的默认返回值
  • 每次进入循环第一步先读取用户输入,兼容首尾空格的异常输入场景
  • 拿到输入后优先判断是否为不区分大小写的终止符x,命中则直接跳出循环
  • 非终止符的输入先做整数合法性校验,转换成功后再参与乘积计算,避免非法输入导致程序崩溃
  • 循环条件设为恒真,所有终止逻辑靠输入判断后的break触发
修复后可运行代码
int product = 1;
string input;

do
{
    Console.WriteLine("请输入整数(输入x终止计算):");
    input = Console.ReadLine()?.Trim() ?? "";
    
    // 命中终止符直接跳出循环
    if (input.ToLower() == "x")
    {
        break;
    }

    // 校验输入合法性后再计算
    if (int.TryParse(input, out int num))
    {
        product *= num;
    }
    else
    {
        Console.WriteLine("输入无效,请输入合法整数,或输入x终止计算");
    }

} while (true);

Console.WriteLine($"乘积计算结果:{product}");
Console.ReadLine();
效果验证
  • 首次运行直接输入x:循环读取到x后直接跳出,product保持初始值1,输出结果1,符合要求
  • 依次输入2、4、5、x:乘积计算为245=40,输出结果正确
  • 输入非数字内容时会给出无效提示,不会直接崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:36:19