输出表与foreach并格式化它很好

时间:2016-02-12 13:13:27

标签: c# list console-application

我想在一个漂亮的表格中输出我的程序的结果。使用表我的意思是列在他们自己之间的文件然后是制表者和他们之间列出的分数。我怎样才能实现这一点呢?目前,我的程序能够一次打印出一个文件,但其他所有其他分数。结果应如下所示:

file1 score1
file2 score2
file3 score3

但目前它看起来像这样:

file1 score1 
score2 
score3
file2 score1
score2
score3

我认为第二个foreach错了,但如何在没有for/foreach的情况下输出一个列表元素?

这是我的代码:

List<string> _fileNameList = new List<string>();
List<double> _counterFleschScore = new List<double>();
string _fileNameList

foreach (string files in _fileNameList)
            {
                Console.Write(files + "\t\t\t\t");

                foreach (double listingFleschScore in _counterFleschScore)
                {
                    Console.Write("{0:N1}", listingFleschScore);
                    Console.WriteLine("");
                }
            }

2 个答案:

答案 0 :(得分:1)

在这种情况下,您应该使用for循环。问题是你有两个嵌套的foreach循环。

确保分数列表至少与文件列表一样大,否则您可能会获得超出范围异常的索引。对于一个完全安全的解决方案,您应该添加一些检查,为清楚起见,我省略了这些检查。

List<string> _fileNameList = new List<string>();
List<double> _counterFleschScore = new List<double>();

for (var i=0;i<_fileNameList.Count;++i)
{
    Console.Write(_fileNameList[i] + "\t\t\t\t");
    Console.Write("{0:N1}", _counterFleschScore[i]);
    Console.WriteLine("");
}

改进的代码看起来像这样。

var _fileNameList = new List<string>();
var _counterFleschScore = new List<double>();

var count = Math.Min(_fileNameList.Count, _counterFleschScore.Count);
for (var i=0; i < count; ++i)
{
    Console.WriteLine(string.Format("{0}\t\t\t\t{1:N1}", _fileNameList[i], _counterFleschScore[i]));
}

答案 1 :(得分:0)

为什么要解决所有问题,只需使用:ConsoleTablesNuget也可用。

还可以再次Console Utilities Nuget