如何使用 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】:
你可以在//sales
for
循环之后使用这段代码:
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# 从表中的二维数组输出值的主要内容,如果未能解决你的问题,请参考以下文章