2017-08-09 16 views
0

このメソッドの後で、リストのカウントは0でなくてはなりません。すべてのデバッグが正しいかどちらもヌルか何かです。私は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

'for(int i = minLenght; i ** <** maxLenght; i ++) ' –

+0

' 'Lenght'はタイプミスです。 'Length'にする必要があります – 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

私はmaxLenghtより大きくないminLenghtに等しいので、forループは実行されません。 ">"を "<"に変更して、必要なものを達成する必要があります。 – obl

3

@oblは右である、これは実行されません。

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

forループステートメントは、 "minLengthiで始まり、imaxLengthより大きい間に開始し、ループを実行してから、iをインクリメントします。

iがmaxLengthより大きくないため、ループは決して実行されません。これに

変更は:

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

"minLengthiで起動し、iながらiをインクリメントし、ループを実行すると、maxLength未満です。"

今度はminLengthから最大でmaxLength-1になります。

imaxLengthに等しい場合、これは最終的にループ1を実行しないことは間違いありません。

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

minLengthiで起動し、iは以下maxLengthに等しい一方で、ループを実行し、インクリメント:(それはあなたが望む本当にの場合)これを修正するには、このようにそれを調整しますi

+0

真実私はなぜ知っていないが、私はあなたにオポジスをthikingしてくれてありがとう –

関連する問題