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时就退出循环

解决方案 »

  1.   

    问题出在这一句:i
    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完全可以啊
      

  2.   

                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) 
                            { 
                    ifExit = true;
                                ifXuanHuan = false; 
                            } 
                          
                        } 
                        if (ifExit) //你之前的代码g=5的时候,执行到这里就跳出,所以始终=5
                            break; 
                    } 
                    ifExit = true; 
                    if (!ifXuanHuan) 
                        break; 
                } 
      

  3.   

    我明白了,我太大意了,其实也不是把g声明在外部
    i11 = 5; 
    j11 = 7; 
    ifExit = true; //这里改成false就行了
    break; 
    多谢