2017-08-09 72 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

真的,我不知道爲什麼,但我反對反對謝謝你 –