输出表与foreach和格式很好

本文关键字:格式 很好 foreach 输出 | 更新日期: 2023-09-27 18:34:24

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

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

输出表与foreach和格式很好

在这种情况下,您应该使用 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]));
}
为什么要

经历所有的麻烦,只需使用:ConsoleTables,Nuget也可用。

还有Console Utilities Nuget也可用。