我有一个代码,其中包含2个for循环:
for (int count = 0; list_Level[count] < list_Level[list_Level.Count]; count++)
{
for (int a = 0; list_Level[a] < Initial_Lvl; a++)
{
var dOpt = new DataGridObjectOpt();
double Closest_Goallvl = list_Level.Aggregate((x, y) => Math.Abs(x - Initial_Lvl) < Math.Abs(y - Initial_Lvl) ? x : y);
dOpt.ImageSource = new Uri(filePaths[a], UriKind.RelativeOrAbsolute);
dOpt.Level_Index = Initial_Lvl;
dOpt.Level_Goal = goallvl;
dOpt.Stage = 1;
LOpt_Temp.Add(dOpt);
}
count = a;
int best_Profit_Ind = LOpt_Temp.FindIndex(x => x.TotalCost == LOpt_Temp.Max(y => y.TotalCost));
LOpt.Add(LOpt_Temp[best_Profit_Ind]);
dataGridOpt.ItemsSource = LOpt;
}
我希望循环从0开始,但是一旦内循环第一次结束并以值a
结束,我希望外循环现在从这个地方开始。
例如,第一个循环从0开始,内部循环在a = 6时退出。现在我想要数到6而不是1。
谢谢。
答案 0 :(得分:0)
正如@dcg所提到的,在再次迭代之前,请先计算+ = a-1。正如@dlatikay所提到的,你可能会遇到IndexOutOfRangeException
。为避免这种情况,请在外部for循环中添加和条件。所以你的最终代码看起来像这样:
for (int count = 0; list_Level[count] < list_Level[list_Level.Count] && count < list_Level.Count; count++)
{
for (int a = 0; list_Level[a] < Initial_Lvl; a++)
{
//Your code
}
count+=a-1
//Your code
}
注意外部for循环中的中间条件。希望它有所帮助。
答案 1 :(得分:0)
首先
list_Level[count] < list_Level[list_Level.Count]
通过使用此条件,您将获得IndexOutOfRangeException,您应该使用
list_Level[count] < list_Level[list_Level.Count - 1]
这样的事情。
另一方面,这可能会对你有所帮助:
for (int count = 0; list_Level[count] < list_Level[list_Level.Count - 1] && count < list_Level.Count; count++){
for (int a = 0; list_Level[a] < Initial_Lvl; a++)
{
//Your code
}
count = a-1;
if(count >= list_Level.Count)
{
break;
}
//Your code
}