首页 > 解决方案 > 具有意外输出的嵌套 for 循环

问题描述

我正在使用嵌套的 for 循环来遍历 2D 数组。我正在检查二维数组中的值是 0 还是 1。如果是 0,我们重新启动内部 for 循环,直到遇到 j = values.GetLenght(1)。如果它是 1,我们继续循环并且 debug.writeline 被触发。

        private bool checkCollided(int sides, int bottom, int[,] values)
        {
            Rectangle rectangle;
            int row = 0;
            int col = 0;
            for (int i = 0; i < values.GetLength(0); i++)
            {
                for (int j = 0; j < values.GetLength(1); j++)
                {
                    if (values[i, j] != 1) continue;
                    Debug.WriteLine("1 or 0 from index: " + i + " " + j + " " + values[i, j]);
                }

            }
            return null;
        }

现在让我们说 int[,] values 等于这个二维数组:

1,1

1,1

预期的输出将是 writeline 函数的 4 倍,在 2D 数组中找到的每个 1 对应 1。问题是,通过使用这段代码,我得到了正确的输出,但是是 3 次而不是 1 次。

谁能向我解释为什么它会触发正确的索引,但是 3 次?

标签: for-loopmultidimensional-array

解决方案


推荐阅读