2016-12-26 17 views
1

私は列でコンソールに印刷したいリストのリストをいくつか持っています。 リストは次のようになります。2Dリストをコンソール(コンソール)に出力するC#

List<List<string>> my2DimList = new List<List<string>>(); 

次にループを繰り返して、charsを追加します。

for (int i = 0; i < max; i++) 
{ 
    my2DimList.Add(new List<string>()); 
} 

for (int i = 0; i < numLoops; i++) 
{ 
    //Do some work here 
    my2DimList[s].Add(my_char);  
} 

コンソールにcharsを印刷します。次のようにします。
リストを保持する2つのリストを保持した場合:

Jon 
Mike  

を、私はこのようにそれを印刷したい:

e 
nk 
oi 
JM 

それを行うための最善の方法は何ですか? 私はいくつかの回転を考えてきましたが、リストは

+0

@Media私の質問の終わりに説明されています – axcelenator

答えて

2

のは、道のうち、予選を取得してみましょう同じ長さではありません。

var list = new List<List<string>> 
    { 
     new List<string> { "J", "o", "n" }, 
     new List<string> { "M", "i", "k", "e"} 
    }; 

int h = list.Count; 
int w = list.Max(l => l.Count); 

したがって、最初の、のはどのような定期的な印刷方法を見てしまうみましょうそれでは、forヘッダの順序を切り替えることができ、今では列にそれを印刷したい

for (int i = 0; i < h; i++) 
{ 
    for (int j = 0; j < w; j++) 
    { 
     if (j < list[i].Count) 
      Console.Write(list[i][j]); 
     else 
      Console.Write(" "); 
    } 

    Console.WriteLine(); 
} 

// Prints: 
// Jon 
// Mike 

のように見えます

これで、上から下に印刷するのではなく、上から印刷したいと考えています。我々は垂直インデックスカウント時にそのために、我々は、最大で開始し、分に始まり、カウントアップするのではなく、カウント・ダウン:

for (int j = w - 1; j >= 0; j--) 
{ 
    for (int i = 0; i < h; i++) 
    { 
     if (j < list[i].Count) 
      Console.Write(list[i][j]); 
     else 
      Console.Write(" "); 
    } 

    Console.WriteLine(); 
} 

// Prints: 
// e 
// nk 
// oi 
// JM 

そしてそこにあなたがそれを持っています。特定の注文の文字列を印刷することは、一連の逆転にすぎません。

関連する問題