嵌套for循环未执行

本文关键字:执行 循环 for 嵌套 | 更新日期: 2023-09-27 18:03:03

谁能告诉我为什么嵌套的for循环在下面的代码不执行?例如,不打印"Hello World"。第一个循环正在执行。

 for (int i = 0; i < data.Length; i++)
        {// Loop through array

            **for (int j = data.Length - 1; j < i; j--)**
            {
                // Loop backwards through array
                **Console.WriteLine("Hello World");**
                double subTotal = 0;   //Keeps track of current subsequence's value
                subTotal += data[j];
                if (bbestTotal < subTotal)
                {
                    bbestTotal = subTotal;
                }
            }
        }

嵌套for循环未执行

循环没有执行,因为循环条件

j < i

是在循环开始的false

由于循环将j 向下移动,您应该将条件更改为

for (int j = data.Length - 1 ; j >= i ; j--)

内循环变量j初始化为顶值,它比i大,所以在循环条件部分使用j > i代替j < i

改变
for (int j = data.Length - 1; j < i; j--)

for (int j = data.Length - 1; j > i; j--)

问题的根本原因是第二个for循环的条件j < i对于i的所有值总是为假。所以它永远不会进入第二个for循环的主体。这应该可以解决这个问题:

for (int j = data.Length - 1; j > i; j--)