我试图搜索一个数组,只检查特定的值(第4、第5等)-((0+n*4)和(3+n*4)。
将检查找到的第一个,如果其值为0,则将其更改为1,然后程序应停止。如果没有,它将尝试下一个值,以此类推。。
我有下面的代码,但它没有停止..它使所有的值同时为1。。
有什么建议吗?

        {
        for (i=0; i<(totalnumber); i++)
        {   for (n=0; n<((totalnumber)/4); n++)
            {   if (i==(0+(n*4)))
                {   if (array[i]==0)
                    {
                        array[i]=1;
                        break;
                    }
                }

                else if ((i==(3+(n*4))))
                {
                if (array[i]==0)
                {
                    array[i]=1;
                    break;
                }
                }
            }
        }
    }

最佳答案

使用单个break语句只会中断最近的循环。它不会脱离外部循环所以,也要改变你的代码以脱离外部循环。
另一种方法是在同一for循环中同时使用两个计数器变量ii。也就是说,你只需要使用一次n就可以跳出外部for循环。
我引用MSDN
在嵌套语句中,break语句仅终止立即将其括起来的do、for、switch或while语句。您可以使用return或goto语句将控制权从嵌套结构转移到其他位置。
这是相关的-Can I use break to exit multiple nested for loops?

07-24 09:46
查看更多