第二个For循环值取决于第一个For循环值

时间:2018-06-20 10:22:58

标签: c# for-loop

以下代码中有两个for循环。我希望在执行for循环时具有以下值。

  • 当n = 1时,o = 0,1
  • 当n = 2时,o = 2,3
  • 当n = 3时,o = 4,5
  • 当n = 4时,o = 6,7
  • 当n = 5时,o = 8,9

有可能吗?如果可能的话,请告诉我如何做的方式。谢谢。

for (int n = 1; n < dates.Count - 1; n++)
{
    for (int o = n; o < n + 2; o++)
    {
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b><ins>Place Number </ins></b>" + "<b><ins>" + o + "</b></ins>" + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Place Name: </b>" + touristAttractionName[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Address: </b>" + touristAttractionFormattedAddress[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Phone Number: </b>" + touristAttractionFormattedPhoneNumber[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>International Phone Number: </b>" + touristAttractionInternationalPhoneNumber[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Website: </b>" + touristAttractionWebsite[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b><ins>Opening Hours</ins></b>" + "<br/>";
        for (int p = 0; p < 7; p++)
        {
            TravelPlanTouristAttractionNWeatherLabel.Text += touristAttractionOpeningHours[o, p] + "<br/>";
        }
        TravelPlanTouristAttractionNWeatherLabel.Text += "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b><ins>Rating & Review</ins></b>" + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Overall Rating: </b>" + touristAttractionRating[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Author: </b>" + touristAttractionReviewAuthor[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Rating: </b>" + touristAttractionReviewRating[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<b>Review: </b>" + touristAttractionReviewText[o] + "<br/>";
        TravelPlanTouristAttractionNWeatherLabel.Text += "<br/>";
    }
}

4 个答案:

答案 0 :(得分:1)

根据您的示例,o2*n-2 to 2*n-1范围内,因此您可以使用类似的内容:

for (int n = 1; n < dates.Count - 1; n++){
   for (int o = 2*n-2; o < 2*n; o++) {
      //Do your magic here
   }
}

答案 1 :(得分:1)

尝试一下-

for (int n = 0; n < dates.Count -1, n++)
{
    for (int o = (n-1)*2; o < 2n; o++)
    {
        //Add your logic here :)
    }
}

答案 2 :(得分:1)

如我所见,您的要求中有一个模式。按照该模式,o将始终按顺序递增。而n将从1递增到日期的计数。

所以基本上您可以在不计算n上任何公式的情况下得出o。

(请确保您是否要从n =其他数字开始循环,然后您希望o应保持n的初始值,但不会。但是我看不到视您的问题而定)

这样做,

int o = 0;
for (int n = 1; n < dates.Count - 1; n++)
{
  ....
     for(int k = 0; k < 2; k++)
     {
          // this loop should be running for two iterations only.
          //even if loop is on k, use o
          o++;
     }
}

但是如果您想建立关系。 o的循环刚好在2xn的值之前结束,因此o的循环应运行2次。

因此相对循环可以从

开始

o =(2 * n)-2至o <2 * n。

for(int o = (2*n) - 2 ; o < 2*n; o++)

答案 3 :(得分:-1)

您要

当n = 1时,o = 0,1

当n = 2时,o = 2,3

当n = 3时,o = 4,5

当n = 4时,o = 6,7

所以尝试:

for (int n = 1; n < dates.Count - 1; n++)
{
    int o_start = 0; // covers n = 1
    if(n == 2)
      o_start = 2;
    if(n == 3)
      o_start = 4;
    if(n == 4)
      o_start = 6;

    for (int o = o_start; o < o_start + 2; o++)
    {
        // execute o-loop
    }
}

或者,您可以定义一个包含索引的数组,然后通过[n]访问它们。