如何使用 C# 从表中的二维数组输出值

Posted

技术标签:

【中文标题】如何使用 C# 从表中的二维数组输出值【英文标题】:How do I output values from a 2D array in a table using C# 【发布时间】:2021-12-09 05:45:51 【问题描述】:

我需要让我的代码输出与示例输出相同的表。

代码首先要求用户输入,然后将它们存储在一个数组中。数据也在输入时进行验证。月份范围从 1 月到 12 月,旨在将所有结果输出到与所需输出中的表类似的表中。

我的代码:

string[] salesReps =  "Dave", "Sarah", "Juan", "Gilno" ;
string[] months =  "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
"Oct", "Nov", "Dec" ;
int[,] salesStats = new int[4, 12];

//title
Console.Write("\n\nSales Figures\n");
Console.Write("*******************\n");

//sales
for (int i = 0; i < 4; i++)

    Console.Write("\n");
    Console.WriteLine("Enter the sales data for 0", salesReps[i]);
    for (int j = 0; j < 12; j++)
    
        Console.Write(months[j] + ": ");
        //validates entry
        while (!int.TryParse(Console.ReadLine(), out salesStats[i, j]))
        
            Console.Beep();
            Console.WriteLine("Please enter only valid numbers!");
            Console.Write(months[j] + ": ");
        
    

使用我已经拥有的代码,我将如何实现所需的输出?

期望的输出:

【问题讨论】:

将所有数据收集到int[,] salesStats = new int[4, 12]; 之后,您将需要另一个(嵌套)循环来打印结果。您还需要存储名称。 【参考方案1】:

你可以在//salesfor循环之后使用这段代码:

Console.WriteLine("\nResult:\n");
Console.WriteLine("\t" + string.Join("\t", months)); // Print months row
StringBuilder sb = new StringBuilder();

for (int i = 0; i < salesReps.Length; i++)

    sb.Append(salesReps[i] + "\t"); // Add Name
    for (int j = 0; j < salesStats.Length / salesReps.Length; j++)
        sb.Append(salesStats[i, j] + "\t"); // Add values per montth

    Console.WriteLine(sb.ToString()); // Print to console
    sb.Clear(); // Clear for new row data

它使用StringBuilder 类为salesStats 的每个值构建带有\t 缩进的行。要在不使用 StringBuilder 的情况下弥补问题,请将 sb.Append(...) 替换为 Console.Write(...) 并在第一个循环结束时只留下空的 Console.WriteLine()

for (int i = 0; i < salesReps.Length; i++)

    Console.Write(salesReps[i] + "\t"); // Print Name
    for (int j = 0; j < salesStats.Length / salesReps.Length; j++)
        Console.Write(salesStats[i, j] + "\t"); // Print values per month at same line in Console

    Console.WriteLine(); // To make line break

您可以“玩”.PadLeft(int) 值以根据需要对齐项目。我的意思是例如:

salesReps[i].PadLeft(3) + "\t";
salesStats[i, j].ToString().PadLeft(3) + "\t";

3 在这种情况下应该是字符串表示中的最大j 值的长度,我认为(例如“4321” - 长度 = 4、“78923” - 长度 = 5 等)。您可以在 *** 上搜索如何获取多维数组中的最大值。其中之一here。

【讨论】:

谢谢!这非常有见地! 如果对您有帮助或解决了您的问题,请标记为有帮助。 已经完成了,谢谢帮助!

以上是关于如何使用 C# 从表中的二维数组输出值的主要内容,如果未能解决你的问题,请参考以下文章

如何防止从表中已有的值派生的表中的某些值组合?

如何分离从表行中获取的值并将其存储在雪花中的数组中

如何使用 MatLAB 脚本从表中构建数组?

如何获取二维数组的列数

从表中的多个值中选择不在数组中的位置

如何从表中选择除外表中的值之外的所有值?