用 foreach 输出 table 并格式化好
Output table with foreach and format it nice
我想以漂亮的方式输出程序的结果table。使用 table 我的意思是文件在它们之间列出,然后是制表符和分数在它们之间列出。我怎样才能做到这一点?目前,我的程序能够一次打印出一个文件,但可以打印出所有其他分数。结果应如下所示:
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("");
}
}
在这种情况下,您应该使用 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
again Nuget也可以
我想以漂亮的方式输出程序的结果table。使用 table 我的意思是文件在它们之间列出,然后是制表符和分数在它们之间列出。我怎样才能做到这一点?目前,我的程序能够一次打印出一个文件,但可以打印出所有其他分数。结果应如下所示:
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("");
}
}
在这种情况下,您应该使用 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
again Nuget也可以