2016-04-21 83 views
-1

我需要从这个表中的数据放入一个数组,然后在控制台中将数组打印为格式化的表。 下面是我从http://puu.sh/oqV8f/7d982f2665.jpg获得数据的表格;我只需要使数组输出行和列而不是列表。 我有这个至今:二维数组在c#中的表?

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(); 
     } 
    } 
} 

什么想法?

+0

你在哪里卡住了? – mbeckish

+0

你有一个二维数组,你想把它变成一张表?什么样的桌子? HTML表格?数据库表? – dfdsfdsfsdf

+0

的可能的复制[格式化字符串转换成列(http://stackoverflow.com/questions/2978311/format-a-string-into-columns) –

回答

1

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(); 
} 
0

如果您在控制台中使用等宽字体可以调节每个东西显示通过把更多的空间,如果有必要

例如,对于相应的成员到第一和第二行以及第二列的第一列,这将是要计算的东西:

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

使用而不是一些空格的标签也可能奏效,但如果表结束有一些字符串是超过一个在另一列是行不通大得多。

希望它有帮助。

0

明白了。

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(); 
      } 
     } 
    } 
}