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

C# Do While循环如何留存用户输入?新手求和问题求解

解决C# Do While循环累加价格的问题

嘿,我来帮你搞定这个问题!你遇到的核心问题是没有做累加操作,而且可能把终止输入的-1也不小心算进总和里了。咱们一步步来修正:

关键思路

  1. 先初始化一个累加变量(比如subtotal),初始值设为0,专门用来存储所有有效价格的总和——这个变量一定要放在循环外面,不然每次循环都会被重置为0!
  2. 每次获取用户输入后,先判断是不是-1:如果不是,就把这个价格加到累加变量里;如果是,就退出循环。
  3. 用安全的方式解析输入(比如decimal.TryParse),避免用户输入非数字导致程序崩溃。

完整示例代码

using System;

class PriceCalculator
{
    static void Main()
    {
        // 初始化小计为0,用于累加所有有效价格
        decimal subtotal = 0;
        decimal inputPrice;

        do
        {
            Console.WriteLine("请输入价格(输入-1结束):");
            // 尝试将用户输入转换为decimal类型
            bool isInputValid = decimal.TryParse(Console.ReadLine(), out inputPrice);

            if (isInputValid)
            {
                // 只有当输入不是终止符-1时,才累加到小计
                if (inputPrice != -1)
                {
                    subtotal += inputPrice; // 等价于 subtotal = subtotal + inputPrice;
                }
            }
            else
            {
                Console.WriteLine("哎呀,请输入有效的数字哦!");
                // 如果输入无效,设置一个非-1的值,让循环继续执行
                inputPrice = 0;
            }
        } while (inputPrice != -1); // 当输入-1时,退出循环

        // 输出最终小计,用:C格式化为货币形式
        Console.WriteLine($"所有输入价格的小计是:{subtotal:C}");
    }
}

重点解释

  • 累加变量的位置:subtotal在循环外初始化,这样每次循环都能保留之前累加的结果,不会被重置。
  • 排除终止符:判断inputPrice != -1后再累加,避免把结束命令-1算进总和里。
  • 安全解析输入:decimal.TryParse会返回布尔值表示解析是否成功,比直接用decimal.Parse更稳健,不会因为用户输入字母就崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:35:05