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

如何让C#控制台程序先批量输入数据再统一结构化输出?

修改后的C#控制台代码(批量输入后统一输出)

需求说明

原代码输入一组棒材参数就立即执行结构化输出,现调整为:先询问要处理的棒材数量,批量完成所有参数输入后,再统一输出所有计算结果。

修改后完整代码

using System;
using System.Collections.Generic;

namespace ConsoleApp3
{
    // 自定义棒材数据类,替代原数组,提升代码可读性与维护性
    public class BarData
    {
        public float Radius { get; set; }
        public float Lambda { get; set; }
        public float Length { get; set; }
        public float DeltaTime { get; set; }
        public float ColdTemp { get; set; }
        public float HotTemp { get; set; }
        public float Area { get; set; }
        public float DeltaQ { get; set; }
        public float DeltaQPerDeltaTime { get; set; }
    }

    class Program
    {
        static void Main()
        {
            do
            {
                try
                {
                    Console.Write("请输入要处理的棒材数量:");
                    int barCount = int.Parse(Console.ReadLine());
                    var barList = new List<BarData>();
                    const float PI = (float)Math.PI;

                    // 批量输入所有棒材参数并计算
                    for (int i = 0; i < barCount; i++)
                    {
                        Console.WriteLine($"\n=== 输入第{i + 1}根棒材参数 ===");
                        var bar = new BarData();

                        Console.Write("输入棒材半径:");
                        bar.Radius = float.Parse(Console.ReadLine());
                        bar.Area = PI * bar.Radius * bar.Radius; // 计算横截面积

                        Console.Write("输入棒材热传导系数λ:");
                        bar.Lambda = float.Parse(Console.ReadLine());

                        Console.Write("输入棒材长度:");
                        bar.Length = float.Parse(Console.ReadLine());

                        Console.Write("输入时间变化量Δt:");
                        bar.DeltaTime = float.Parse(Console.ReadLine());

                        Console.Write("输入棒材低温端温度T2:");
                        bar.ColdTemp = float.Parse(Console.ReadLine());

                        Console.Write("输入棒材高温端温度T1:");
                        bar.HotTemp = float.Parse(Console.ReadLine());

                        // 计算热传递相关数值
                        bar.DeltaQ = -((bar.Lambda * bar.Area) / bar.Length) * (bar.ColdTemp - bar.HotTemp) * bar.DeltaTime;
                        bar.DeltaQPerDeltaTime = bar.DeltaQ / bar.DeltaTime;

                        barList.Add(bar);
                    }

                    // 统一输出所有棒材的结构化结果
                    Console.WriteLine("\n=== 棒材热传递计算结果 ===");
                    // 打印表头
                    Console.WriteLine("材质名称    热传导系数       低温T2  高温T1  时间Δt    长度      横截面积    单位时间传热量");
                    Console.WriteLine("          (cal/sec)/(C cm)   (C)    (C)    (Sec)     (cm)     (sq cm)     (cal/sec)");
                    Console.WriteLine("---------------------------------------------------------------------------------------");

                    // 遍历输出每根棒材数据
                    foreach (var bar in barList)
                    {
                        Console.WriteLine("Ultimate    {0:F2}          {1:F2}   {2:F2}   {3:F2}     {4:F2}       {5:F2}       {6:F2}",
                            bar.Lambda, bar.ColdTemp, bar.HotTemp, bar.DeltaTime, bar.Length, bar.Area, bar.DeltaQPerDeltaTime);
                        Console.WriteLine("Supreme     {0:F2}          {1:F2}   {2:F2}   {3:F2}     {4:F2}       {5:F2}       {6:F2}\n",
                            bar.Lambda, bar.ColdTemp, bar.HotTemp, bar.DeltaTime, bar.Length, bar.Area, bar.DeltaQPerDeltaTime);
                    }
                }
                catch (FormatException)
                {
                    Console.WriteLine("错误:请输入有效的数字!");
                }

                Console.WriteLine("\n是否继续处理?(Y=是,N=否)");
            } while (Console.ReadLine().ToUpper() == "Y");

            Console.WriteLine("程序结束,按任意键退出...");
            Console.ReadKey();
        }
    }
}

核心修改点

  • 数据结构优化:用List<BarData>替代原数组,通过自定义类封装参数,避免索引混乱
  • 输入输出分离:先完成所有棒材的输入与计算,存入集合后再统一执行输出逻辑
  • 修复语法问题:修正原代码中不完整的if语句、数组索引越界等错误
  • 用户体验提升:添加分段提示、结果分隔线,表头信息更清晰直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:36:00