检查下一个循环迭代数据,除非在循环结束c#

本文关键字:循环 结束 下一个 迭代 数据 检查 | 更新日期: 2023-09-27 18:15:33

我正在制作一个创建ASCII图像的程序。根据星号的输入,它会产生不同的结果。首先,我做了一个基本的大纲,但我有一个问题,我不能添加一些东西时,检查最后的循环迭代。

方法代码:

        private List<string> DrawOutline(List<string> inputLines)
    {
        List<string> output = new List<string>();
        int door = r.Next(0, inputLines.Last().Length);
        for (int li = 0; li < inputLines.Count; li++)
        {
            char[] curLine = inputLines[li].ToCharArray();
            string outputLine1 = string.Empty;
            string outputLine2 = string.Empty;
            for (int i = 0; i < curLine.Length -1; i++)
            {
                Console.WriteLine(curLine[i]);
                if (curLine[i] == '*')
                {
                    outputLine1 += "+---";
                    outputLine2 += "|   ";
                }
                else
                {
                    outputLine1 += "    ";
                    outputLine2 += "    ";
                }
                if(li < curLine.Length - 1)
                {
                    if (curLine[i] == '*' && curLine[i + 1] != '*')
                    {
                        outputLine1 += "+";
                        outputLine2 += "|";
                    }
                }
            }
            output.Add(outputLine1);
            output.Add(outputLine2); 
        }
        return output;
    }

当我运行这个时,它工作得很好,但是不会将'+'和'|'添加到outputLines的最后一行。这是因为:

if(li < curLine.Length -1)

然而,如果没有-1,它将抛出一个异常,因为我正在使用[I +1]来决定某事。是否有一种方法可以检查它是否会抛出异常?

检查下一个循环迭代数据,除非在循环结束c#

可以使用OR(||)语句检查是否到达数组的末尾。如果OR语句的第一个语句返回true,则不检查第二个语句。这就是所谓的短路。在这种情况下不应该抛出错误。

private List<string> DrawOutline(List<string> inputLines)
{
    List<string> output = new List<string>();
    int door = r.Next(0, inputLines.Last().Length);
    for (int li = 0; li < inputLines.Count; li++)
    {
        char[] curLine = inputLines[li].ToCharArray();
        string outputLine1 = string.Empty;
        string outputLine2 = string.Empty;
        for (int i = 0; i < curLine.Length -1; i++)
        {
            Console.WriteLine(curLine[i]);
            if (curLine[i] == '*')
            {
                outputLine1 += "+---";
                outputLine2 += "|   ";
            }
            else
            {
                outputLine1 += "    ";
                outputLine2 += "    ";
            }
            if (curLine[i] == '*' && (curLine.Length == i+1 || curLine[i + 1] != '*'))
            {
                outputLine1 += "+";
                outputLine2 += "|";
            }
        }
        output.Add(outputLine1);
        output.Add(outputLine2); 
    }
    return output;
}

if (li < curLine.Length - 1)更改为if (i < curLine.Length - 1)