2014-02-25 60 views
-6

安慰基本上我想打印一個列表的內容在控制檯中格式化的方式,像這樣:在列表打印C#數組中格式化的方式

expected output

但是我目前有:

Console.WriteLine("\nHistory | B W"); 
Console.WriteLine("================"); 

List.AddRange(array1); 
List.Add(array2); 
List.Add(array3); 

foreach (int i in List) 
{ 
    Console.Write(i); 
} 

打印這樣的:

actual output

任何幫助將不勝感激。

+3

什麼是List列表?什麼是'array1'?什麼是'array2'?什麼是'array3'?你有什麼數據? –

+0

List是包含array1,array2,array3中的信息的List <>。 Array1是歷史,array2是B和array3是W.並且數據是我用於演示的隨機整數。謝謝 – user3352356

+0

你的列表應該是一個有3個字段的複雜對象類型的列表。因爲您無法知道列表何時到達「行尾」,甚至無法知道第一個字段的末尾和第二個字段的開頭之間的行是什麼。在修復數據模型之前,您無法正確顯示它。 – Servy

回答

0

簡單的解決方案,如果所有的數組有相同的長度:

string rowFormat = "{0,15}|{1,3} {2,3}"; 
Console.WriteLine(rowFormat, "History", "B", "W"); 
Console.WriteLine(new String('=', 25)); 

for(int i = 0; i < array1.Length; i++)  
    Console.WriteLine(rowFormat, array1[i], array2[i], array3[i]); 

但我會建議使用自定義類型的數據,而不是保存數據三個數組。例如。 (根據您的意見名)

public class UserGuess 
{ 
    public int AttemptNumber { get; set; } 
    public int BlacksCount { get; set; } 
    public int WhitesCount { get; set; } 
} 

但格式將保持不變:

foreach(var g in guesses) 
    Console.WriteLine(rowFormat, 
     g.AttemptNumber, g.BlacksCount, f.WhitesCount); 

注:作爲的String.Format文檔狀態The format item部分,格式條款具有以下語法{ index[,alignment][ :formatString] }。所以,上面的代碼只使用alignment參數來設置固定的字段總長度。

+0

是的,我會傾向於同意,除非我不能使用.Length和數組大小是用戶定義如此未知,直到應用程序運行。 – user3352356

+0

@ user3352356所以數組不是數組?你有什麼數據類型? –

+0

所有正在使用整數,然而用戶被問到數組需要多大,然後數組被聲明爲大小A(A是用戶輸入int)。所以int [] array = new int [A] – user3352356