如果向后列表打印矩阵则失去价值
Losing value if backwards List printing matrix
我需要显示 Sheet 以便行 左下对齐 。如果单词中没有 10 个字符,则添加“+”字符数,使该行的总数为 10 个字符(参见我的输出)。
为什么,当我打印 List 时,我丢失了一行?
我的代码有什么问题?这个矩阵应该是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)));
}
}
因为你的 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));
}
}
我需要显示 Sheet 以便行 左下对齐 。如果单词中没有 10 个字符,则添加“+”字符数,使该行的总数为 10 个字符(参见我的输出)。
为什么,当我打印 List 时,我丢失了一行?
我的代码有什么问题?这个矩阵应该是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)));
}
}
因为你的 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));
}
}