Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个For循环_C#_For Loop - Fatal编程技术网

C# 多个For循环

C# 多个For循环,c#,for-loop,C#,For Loop,编辑:我已经更新了我的问题,我知道我可以将循环次数从4增加到12,但我将循环次数从3增加到3是因为这个原因;在迭代第一个循环之后,我必须单击carousel以转到下一个迭代,因为您可以看到我的更新代码。-很抱歉,我在复制/粘贴时错过了代码 我想遍历这些行,总共有3行,每行有4列,例如: row 1 has 4 columns row 2 has 4 columns row 3 has 4 columns 我已经创建了3个独立的for循环,我的代码可以工作,但我相信我的代码还有改进的空间,它可以

编辑:我已经更新了我的问题,我知道我可以将循环次数从4增加到12,但我将循环次数从3增加到3是因为这个原因;在迭代第一个循环之后,我必须单击carousel以转到下一个迭代,因为您可以看到我的更新代码。-很抱歉,我在复制/粘贴时错过了代码

我想遍历这些行,总共有3行,每行有4列,例如:

row 1 has 4 columns
row 2 has 4 columns
row 3 has 4 columns
我已经创建了3个独立的for循环,我的代码可以工作,但我相信我的代码还有改进的空间,它可以在一个循环中而不是在三个循环中吗

代码如下:

//first row

for (int j = 0; j < 4; j++) 
{  
   string _image = String.Format("id('gen{0}')/a[{1}]/img", j, "1");                 
   string _text = String.Format("id('gen{0}')/a[{1}]", j, "2");
   ...........
   WaitForElement(By.XPath(_text)).Click();
}

_carouselDot = String.Format("id('HomePage1_Carousel1')/div/ul/li[{0}]/a", 2);
WaitForElement(By.XPath(_carouselDot)).Click();

//second row
for (int j = 4; j < 8; j++) 
{  
   string _image = String.Format("id('gen{0}')/a[{1}]/img", j, "1");                 
   string _text = String.Format("id('gen{0}')/a[{1}]", j, "2");
   ...........
   WaitForElement(By.XPath(_text)).Click();
}

_carouselDot = String.Format("id('HomePage1_Carousel1')/div/ul/li[{0}]/a", 3);
WaitForElement(By.XPath(_carouselDot)).Click();

//third row
for (int j = 8; j < 12; j++) 
{  
   string _image = String.Format("id('gen{0}')/a[{1}]/img", j, "1");                 
   string _text = String.Format("id('gen{0}')/a[{1}]", j, "2");
   ...........
   WaitForElement(By.XPath(_text)).Click();
}
//第一行
对于(int j=0;j<4;j++)
{  
string _image=string.Format(“id('gen{0}')/a[{1}]/img”,j,“1”);
string _text=string.Format(“id('gen{0}')/a[{1}]”,j,“2”);
...........
WaitForElement(By.XPath(_text))。单击();
}
_carouselDot=String.Format(“id('HomePage1_Carousel1')/div/ul/li[{0}]/a”,2);
WaitForElement(By.XPath(_carouselDot)).Click();
//第二排
对于(int j=4;j<8;j++)
{  
string _image=string.Format(“id('gen{0}')/a[{1}]/img”,j,“1”);
string _text=string.Format(“id('gen{0}')/a[{1}]”,j,“2”);
...........
WaitForElement(By.XPath(_text))。单击();
}
_carouselDot=String.Format(“id('HomePage1_Carousel1')/div/ul/li[{0}]/a”,3);
WaitForElement(By.XPath(_carouselDot)).Click();
//第三排
对于(int j=8;j<12;j++)
{  
string _image=string.Format(“id('gen{0}')/a[{1}]/img”,j,“1”);
string _text=string.Format(“id('gen{0}')/a[{1}]”,j,“2”);
...........
WaitForElement(By.XPath(_text))。单击();
}

是的,您可以有一个从0到12的循环

for (int j = 0; j < 12; j++) 
{  
   string _image = String.Format("id('gen{0}')/a[{1}]/img", j, "1");                 
   string _text = String.Format("id('gen{0}')/a[{1}]", j, "2");
   ...........
   WaitForElement(By.XPath(_text)).Click();
}
for(int j=0;j<12;j++)
{  
string _image=string.Format(“id('gen{0}')/a[{1}]/img”,j,“1”);
string _text=string.Format(“id('gen{0}')/a[{1}]”,j,“2”);
...........
WaitForElement(By.XPath(_text))。单击();
}

这有什么问题-

for (int j = 0; j < 12; j++) 
{  
   string _image = String.Format("id('gen{0}')/a[{1}]/img", j, "1");                 
   string _text = String.Format("id('gen{0}')/a[{1}]", j, "2");
   ...........
   WaitForElement(By.XPath(_text)).Click();

   if(i % 4 == 3 && i != 11)
   {
      _carouselDot = String.Format("id('HomePage1_Carousel1')/div/ul/li[{0}]/a",
                                                                 (i/4 + 2));
       WaitForElement(By.XPath(_carouselDot)).Click();
   }
}
for(int j=0;j<12;j++)
{  
string _image=string.Format(“id('gen{0}')/a[{1}]/img”,j,“1”);
string _text=string.Format(“id('gen{0}')/a[{1}]”,j,“2”);
...........
WaitForElement(By.XPath(_text))。单击();
如果(i%4==3&&i!=11)
{
_carouselDot=String.Format(“id('HomePage1_Carousel1')/div/ul/li[{0}]/a”,
(i/4+2));
WaitForElement(By.XPath(_carouselDot)).Click();
}
}

除了j的边界外,我看不出这三个区块之间有什么区别;那么为什么你不能只做一个循环呢

for (int j = 0; j < 12; j++) 
...
for(int j=0;j<12;j++)
...
就像这样

for (int i = 0; i < 3; i++) 
{  
   for (int j = 0; j < 4; j++)
   { 
        code here
   }
}
for(int i=0;i<3;i++)
{  
对于(int j=0;j<4;j++)
{ 
代码在这里
}
}
编辑:

因为你编辑了你的问题,现在看起来更好了:

for (int i = 0; i < 12; i++)
       { 
            string _image = String.Format("id('gen{0}')/a[{1}]/img", j, "1");                 
            string _text = String.Format("id('gen{0}')/a[{1}]", j, "2");
            ...........
            WaitForElement(By.XPath(_text)).Click();

            if (i % 4 == 0)
            {
                _carouselDot = String.Format("id('HomePage1_Carousel1')/div/ul/li[{0}]/a", 2);
                WaitForElement(By.XPath(_carouselDot)).Click();
            }
       }
for(int i=0;i<12;i++)
{ 
string _image=string.Format(“id('gen{0}')/a[{1}]/img”,j,“1”);
string _text=string.Format(“id('gen{0}')/a[{1}]”,j,“2”);
...........
WaitForElement(By.XPath(_text))。单击();
如果(i%4==0)
{
_carouselDot=String.Format(“id('HomePage1_Carousel1')/div/ul/li[{0}]/a”,2);
WaitForElement(By.XPath(_carouselDot)).Click();
}
}

您可以使用两个嵌套的
for
块整洁高效地完成此操作:

int rows = 3;
int cols = 4;
for (int i = 0; i < rows; i++) 
{  
    for (int j = 0; j < cols; j++)
    { 
        int n = (cols * i) + j;
        string _image = String.Format("id('gen{0}')/a[{1}]/img", n, "1");                
        string _text = String.Format("id('gen{0}')/a[{1}]", n, "2");
        ...........
        WaitForElement(By.XPath(_text)).Click();
    }
    if (i < rows - 1) 
    {
        _carouselDot = String.Format("id('HomePage1_Carousel1')/div/ul/li[{0}]/a", 2);
        WaitForElement(By.XPath(_carouselDot)).Click();
    }
}
int行=3;
int cols=4;
对于(int i=0;i
这样很明显,您正在处理三个独立的行,您可以根据需要在每行的末尾或开头使用更简单的
if
子句进行特殊处理

为新问题编辑,显示您可以在内部
for
块之后执行
if()


此外,避免代码中出现幻数也是一种很好的做法。这样可以避免错误,例如,如果需要更改行数或列数,只需更改一个变量。

如果能够使用
任务并行库
,则可以并行运行这些变量。是的,有一种方法可以使用1个循环,大多数人会建议使用2个循环,一个嵌套在另一个循环中,但是如果你知道你只有3行,那么你的代码就好了我已经更新了我的问题,请查看我的投票被暂停,等待看到一些涉及
4*i+j
的注释是不是只有当
i==4时才应该执行条件?我想是的,但它没有发生,它第一次和第二次运行它
j%4==0`=true0%4=0。另外,%是你能找到的最慢的运算符之一,尽管这在这段代码中可能没有多大关系。我在if中使用了'j'而不是'I',我修复了它。if(j%4)
的作用是什么?对不起,我读错了。我以为这是在每一行的末尾才做的…不,它第一次和第二次迭代if条件为真,我认为根据您的问题更新的
i%4==0&&i/4-
i%4==3
将对值
3,7,11
有效,并且您希望在
3
7
之后执行它两次,因此请检查
i!=11
%
是一个模运算符,它获取除法运算的余数。因此,它为<代码的循环返回三次true