2013-03-07 185 views
1

任何人都可以告诉我为什么嵌套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; 
       } 
      } 

     } 
+2

data.Length的值是多少? – 2013-03-07 18:34:21

+1

尝试j>我作为第二个循环的条件 – nsconnector 2013-03-07 18:34:45

+0

数据的外观如何? – 2013-03-07 18:34:52

回答

3

循环不执行,因为循环条件

j < i 

false正好在循环的开始。

因为你的循环前进j,你应该改变

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

内环变量j被初始化为最高值,这是大于i所以在循环条件部分使用j > i代替j < i

变化

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

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

条件问题的根本原因是,对于第二个for循环的条件j < i始终是我的所有值假。所以它永远不会进入2nd for循环体内。 这应该解决问题:

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