2017-08-09 68 views
0

在此方法之后,我的列表计数返回0,而不应该。所有的调试都是正确的,他们都不是null或者其他东西。我正在使用Unity。 有谁知道问题在哪里?通过for循环添加值后返回0列表 - c#

List<Coordinates> FillCoordinates() 
{ 
    List<Coordinates> coordinatesList = new List<Coordinates>(); 
    Debug.Log(minLenght); 
    Debug.Log(maxLenght); 
    Debug.Log(heights.Count); 
    for (int i = minLenght; i > maxLenght; i++) 
    { 
     for (int j = 0; j < heights.Count; j++) 
     { 
      coordinatesList.Add(new Coordinates(i, heights[j])); 
     } 
    } 

    return coordinatesList; 
} 

坐标类:

public class Coordinates 
{ 
    public int lenght; 
    public float height; 

    public Coordinates(int lenght_, float height_) 
    { 
     lenght = lenght_; 
     height = height_; 
    } 
} 
+4

'对(INT I = minLenght; I ** <** maxLenght;我++)'' –

+0

是Lenght'一个错字。应该是'长度' – Itsik

回答

3

我猜这永远不会执行,改变我< maxLenght

for (int i = minLenght; i > maxLenght; i++) 
    { 
     for (int j = 0; j < heights.Count; j++) 
     { 
      coordinatesList.Add(new Coordinates(i, heights[j])); 
     } 
    } 
+0

我不希望他在最大长度之前停下来,我希望在我等于最大长度时停止。你看到它不执行的任何理由吗? –

+0

for循环从不执行,因为我等于minLenght,它不大于maxLenght。您需要将“>”更改为“<”,以完成您想要的操作。 – obl

3

@obl是正确的,这将不执行:

for (int i = minLenght; i > maxLenght; i++) 

for循环语句如下: “以iminLength开头,而i大于maxLength,请运行循环,然后增量i。”

由于我不大于maxLength,循环将永远不会运行。

它改成这样:

for (int i = minLenght; i < maxLenght; i++) 

“在minLengthi开始,而i小于maxLength,运行循环,然后递增i。”

它现在将从minLength一直运行到maxLength-1

你是对的,当i等于maxLength时,最后一次不会运行循环。为了解决这个问题(如果这是你想要真的什么),只需调整这样的:

for (int i = minLenght; i <= maxLenght; i++) 

“在minLengthi开始,而i小于或等于maxLength,运行循环,然后递增i“。

+0

真的,我不知道为什么,但我反对反对谢谢你 –