int pRows = 20;
int pColumns = 20;
int i11 = 0;
int j11 = 0;
bool ifExit = false;
bool ifXuanHuan=true ;
while(ifXuanHuan)
{
for (int g = i11; g < pRows; g++)
{
for (int h = j11; h < pColumns; h++)
{
MessageBox.Show("g:" + g.ToString() + " h:" + h.ToString());
if (g == 4)
{
i11 = 5;
j11 = 7;
ifExit = true;
break;
}
else if (g == 6)
{
ifXuanHuan = false;
}
}
if (ifExit)
break;
}
ifExit = true;
if (!ifXuanHuan)
break;
}
当g等于4时,退出循环后重新给g,h赋值为5,7,然后g与h的确为5和7,但是问题出在,h=7---19而5也就是最外面的却没有递增了,不知道要怎么办啊,我是想外面的g接着递增,当g等于6时就退出循环
int pColumns = 20;
int i11 = 0;
int j11 = 0;
bool ifExit = false;
bool ifXuanHuan=true ;
while(ifXuanHuan)
{
for (int g = i11; g < pRows; g++)
{
for (int h = j11; h < pColumns; h++)
{
MessageBox.Show("g:" + g.ToString() + " h:" + h.ToString());
if (g == 4)
{
i11 = 5;
j11 = 7;
ifExit = true;
break;
}
else if (g == 6)
{
ifXuanHuan = false;
}
}
if (ifExit)
break;
}
ifExit = true;
if (!ifXuanHuan)
break;
}
当g等于4时,退出循环后重新给g,h赋值为5,7,然后g与h的确为5和7,但是问题出在,h=7---19而5也就是最外面的却没有递增了,不知道要怎么办啊,我是想外面的g接着递增,当g等于6时就退出循环
f (ifExit)
break;
第一次执行到g==4的时候,ifExit赋值为true,跳出循环之后g==5,h==7,之后h从7循环到19,然后执行if(ifExit) break;这句话,这时由于ifExit为true,所以跳出循环,接下来执行ifExit=true;if(!ifXuanHuan)break;这句话。接下来又从for (int g = i11; g < pRows; g++) 开始执行循环,这时g被重新赋值为5,接下来执行h的循环,h循环结束之后跳出,以后的就跟前面一样了,导致每次h循环结束后g重新被赋值为5,这就是问题所在。解决方法是把g声明在while外部,for(;g<pRows;g++)就可以了。但我不明白你为什么要用另外的变量g,h,只用i11,j11完全可以啊
int pColumns = 20;
int i11 = 0;
int j11 = 0;
bool ifExit = false;
bool ifXuanHuan=true ;
while(ifXuanHuan)
{
for (int g = i11; g < pRows; g++)
{
for (int h = j11; h < pColumns; h++)
{
MessageBox.Show("g:" + g.ToString() + " h:" + h.ToString());
if (g == 4)
{
i11 = 5;
j11 = 7;
//ifExit = true;
break;
}
else if (g == 6)
{
ifExit = true;
ifXuanHuan = false;
}
}
if (ifExit) //你之前的代码g=5的时候,执行到这里就跳出,所以始终=5
break;
}
ifExit = true;
if (!ifXuanHuan)
break;
}
i11 = 5;
j11 = 7;
ifExit = true; //这里改成false就行了
break;
多谢