【问题标题】:2D array to table in c#?二维数组到c#中的表?
【发布时间】:2016-08-15 06:22:38
【问题描述】:

我需要将该表中的数据放入一个数组中,然后将该数组打印为控制台中的格式化表。 这是我从http://puu.sh/oqV8f/7d982f2665.jpg 获得数据的表格;我只需要使数组输出行和列而不是列表。 到目前为止我有这个:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Zumba1
{
    class Zumba
    {
        static void Main(string[] args)
        { //Recreated the data in the table for the zumba section, added each row, and each column.
            string[,] schedule = new string [8, 6] { { "1:00", "3:00", "5:00", "7:00", "TOTAL", "", },
                                 {"Monday", "12", "10", "17", "22", "244",   },
                                 {"Tuesday", "11", "13", "17", "22", "252",},
                                 {"Wednesday", "12", "10", "22", "22", "264",},
                                 {"Thursday", "9", "14", "17", "22", "248",},
                                 {"Friday", "12", "10", "21", "12", "220",},
                                 {"Saturday", "12", "10", "5", "10", "148"},
                                 {" ", " ", " ", " ", " ","1376",}};
            foreach (string i in schedule)
            {
                Console.WriteLine(i.ToString());
            }
            Console.ReadKey();
        }
    }
}

有什么想法吗?

【问题讨论】:

标签: c# arrays


【解决方案1】:

知道了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Zumba1
{
    class Zumba
    {
        static void Main(string[] args)
        { //Recreated the data in the table for the zumba section, added each row, and each column. Worked on formatting.
            string[,] schedule = new string[8, 6] { { "\t\t1:00", "3:00", "5:00", "7:00", "TOTAL", "", },
                                 {"Monday", "\t12", "10", "17", "22", "$244",   },
                                 {"Tuesday", "\t11", "13", "17", "22", "$252",},
                                 {"Wednesday", "12", "10", "22", "22", "$264",},
                                 {"Thursday", "9", "14", "17", "22", "$248",},
                                 {"Friday", "\t12", "10", "21", "12", "$220",},
                                 {"Saturday", "12", "10", "5", "10", "$148"},
                                 {" ", " ", " ", " ", " ","\t$1376",}};
            //Nested for loops to print in a table-style format.
            for (int i = 0; i < schedule.GetLength(0); i++)

            {
                for (int j = 0; j < schedule.GetLength(1); j++)
                {
                    Console.Write(schedule[i, j] + "\t");
                }
                {
                    Console.WriteLine(i.ToString());
                }

            }
     Console.ReadLine();
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    如果您在控制台中使用等宽字体,您可以通过在必要时添加更多空格来调整每个内容的显示位置

    例如,对于对应于第 1 行和第 2 行以及第 1 列的成员,这将是要计算的内容:

    最大的单词是星期三,有 9 个字母,在第一行第一列我应该放 9 个空格,因为会有空格。然后您可以在列之间放置四个空格作为分隔符,然后对于第二列,您计算出 1:00 是最大的字符串,因此对于 12,您将添加 2 个额外的空格,依此类推。

    使用制表符代替某些空格也可能有效,但如果表格最终包含比另一列中的字符串大得多的字符串,则它将不起作用。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      Foreach 在 [,] 数组上将所有元素作为列表提供给您,正如您所注意到的。在这种情况下,您需要输出如下:

      for (int x0 = 0; x0 < schedule.GetLength(0); x0++)
      {
          for (int x1 = 0; x1 < schedule.GetLength(1); x1++)
          {
              Console.Write("{0}\t", schedule[x0, x1]);
          }
          Console.WriteLine();
      }
      Console.ReadKey();
      

      如果您出于任何原因想使用foreach,您也可以将您的表声明为[][] 数组。但在这两种方式中,您都必须创建 2 个循环:

      string[][] schedule = new string[][] {
                                          new string[] { "1:00", "3:00", "5:00", "7:00", "TOTAL", "", },
                                          new string[] {"Monday", "12", "10", "17", "22", "244",   },
                                          new string[] {"Tuesday", "11", "13", "17", "22", "252",},
                                          new string[] {"Wednesday", "12", "10", "22", "22", "264",},
                                          new string[] {"Thursday", "9", "14", "17", "22", "248",},
                                          new string[] {"Friday", "12", "10", "21", "12", "220",},
                                          new string[] {"Saturday", "12", "10", "5", "10", "148"},
                                          new string[] {" ", " ", " ", " ", " ","1376",}
              };
      foreach (string[] line in schedule)
      {
          foreach (string i in line)
              Console.Write("{0}\t", i);
          Console.WriteLine();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-23
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 2013-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多