如果向后列出打印矩阵,则会失去价值
Posted
技术标签:
【中文标题】如果向后列出打印矩阵,则会失去价值【英文标题】:Losing value if backwards List printing matrix 【发布时间】:2021-11-02 14:14:27 【问题描述】:我需要显示一个工作表,以便线条底部和左侧对齐。如果单词中没有 10 个字符,则添加“+”字符数,使该行的总数为 10 个字符(参见我的输出)。
为什么,当我打印一个列表时,我会丢失一行?
我的代码有什么问题?这个矩阵应该是 10X10。
My output
List<string> filtredList = new List<string>() "Jacuzzi", "Action", "Chinchilla", "Squeezebox", "Academic", "Abstract" ;
int row = 10;
filtredList = Sorting(filtredList); //method is sorting by descending.
foreach (var item in filtredList) Console.WriteLine("Item: " + item + " length: " + item.Length);
Console.WriteLine("-------------------------------------");
//AFTER SORTING IN LIST:
//1)Squeezebox 2)Chinchilla 3)Academic 4)Abstract 5)Jacuzzi 6)Action
for (int i = 10; i > 0; i--)
try
if (filtredList[i].Length != 10)
Console.Write(filtredList[i]);
row = 10 - filtredList[i].Length;
Console.WriteLine(string.Concat(Enumerable.Repeat("+", row)));
else Console.WriteLine(filtredList[i]);
catch (SystemException)
row = 10;
Console.WriteLine(string.Concat(Enumerable.Repeat("+", row)));
【问题讨论】:
【参考方案1】:因为您的 for
循环永远不会为 0:
for (int i = 10; i > 0; i--)
i
从 10 变为 1,这就是为什么您的列表中的第一项从不打印。
注意:
数组或列表的第一项索引为0
更好的代码是:
for (int i = 9; i >= 0; i--)
虽然您可以对某些代码使用更好的替代方案,但这会解决您的问题。
编辑:
您可以使用这种方法(只需将for
部分更改为此)不会引发任何异常(因为它通常不是try-catch
的用例)并且还可以获得更快的结果:
for (int i = 9; i >= 0; i--)
if (i < filtredList.Count)
if (filtredList[i].Length != 10)
Console.Write(filtredList[i]);
row = 10 - filtredList[i].Length;
Console.WriteLine(new string('+', row));
else Console.WriteLine(filtredList[i]);
else
row = 10;
Console.WriteLine(new string('+', row));
【讨论】:
以上是关于如果向后列出打印矩阵,则会失去价值的主要内容,如果未能解决你的问题,请参考以下文章
MaskedTextBoxFor 在提交 MVC Razor 视图后失去价值