C#反向遍历List打印10×10矩阵时丢失行问题排查
问题原因
- 循环索引范围错误:C# 中 List 是 0 基索引,你写的
for (int i = 10; i > 0; i--)循环只遍历了 10 到 1 这10个值,完全没有覆盖到索引 0 的位置,导致索引 0 对应的元素没有打印,自然少了一行。 - 靠 try catch 捕获索引越界异常来输出全+行的写法极不规范,不仅性能差,还容易隐藏其他潜在异常。
修正方案
你要输出 10×10 的左下对齐矩阵,直接循环 0 到9的索引即可,判断当前索引是否在 List 的有效范围内,有效就打印对应内容右侧补+,无效就打印10个+,补全逻辑可以直接用字符串自带的 PadRight 方法简化。
修正后的代码如下:
List<string> filtredList = new List<string>() { "Jacuzzi", "Action", "Chinchilla", "Squeezebox", "Academic", "Abstract" }; filtredList = Sorting(filtredList); // 按长度降序排序的方法 foreach (var item in filtredList) Console.WriteLine("Item: " + item + " length: " + item.Length); Console.WriteLine("-------------------------------------"); // 循环10次对应10行,i从9到0刚好匹配左下对齐的输出顺序 for (int i = 9; i >= 0; i--) { if (i < filtredList.Count) { // 字符串长度不足10位时右侧补+ Console.WriteLine(filtredList[i].PadRight(10, '+')); } else { Console.WriteLine(new string('+', 10)); } }
内容的提问来源于stack exchange,提问作者Mark1452
相关产品推荐
相关产品推荐

