如果向后列出打印矩阵,则会失去价值

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));
    

【讨论】:

以上是关于如果向后列出打印矩阵,则会失去价值的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - 变量失去其价值并“成为”未定义

MaskedTextBoxFor 在提交 MVC Razor 视图后失去价值

Rails:Capybara执行js以节省浏览器本地存储的价值

全局变量失去它的价值

合并:发布者有时会失去价值并完成

如果我们不能定期更新自己的知识库,那我们就会慢慢落后于时代,越来越没有价值,也会失去很多机会