我需要讓我的代碼輸出與示例輸出相同的表。
該代碼首先要求用戶輸入,然后將它們存盤在一個陣列中。資料也在輸入時進行驗證。月份范圍從 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] ": ");
}
}
}
使用我已經擁有的代碼,我將如何實作所需的輸出?
期望的輸出:

uj5u.com熱心網友回復:
您可以在//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
}
它使用StringBuilderclass\t為 的每個值構建帶有縮進的行salesStats。為了讓事情時沒有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 等)。您可以在 StackOverflow 中搜索有關如何獲取多維陣列中的最大值的資訊。其中之一在這里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336433.html
