遇到一个情景,采用双层for循环 遍历图像的像素,当找到某一个像素点满足条件时,退出双层for 循环 。
首先了解一下 continue、break、return 各自功能用法:
1.continue 语句的作用
break常和判断语句一起是使用.
其它参考:
1、Java中break return continue 区别
因, break,无法跳出双层循环,
2个解决方案:
1、 将双层for循环 写到一个子函数里面,然后用return 进行返回,退出子函数 。
2、双层for循环不是单独的一个子函数,而是在一个主函数中,还有其它函数,此时用return,会导致整个函数结束,此时可以对双层for循环的两个变量进行同时赋值来终止双层for循环,注意,不能只将外层赋值终止值,否则会报错,因为内层还没有循环完毕,而外层已经超出范围,所以务必现将子循环变量终止后,再终止外循环变量。 代码如下:
-
for (
int i =
0; i < img.rows;i++){
-
for (
int j =
0; j < img.cols;j++){
-
int elesum = rgb.at<Vec4b>(i, j)[
0] + rgb.at<Vec4b>(i, j)[
1] + rgb.at<Vec4b>(i, j)[
2];
-
if (elesum>
0)
-
{
-
i = img.rows; j = img.cols;
// 跳出双层 循环 赋值方式终止两个变量
-
cout <<
"i: " << i <<
endl;
-
cout <<
"j: " << j <<
endl;
-
cout <<
endl;
-
//break;
-
}
-
}
-
}
</div>
</div>
遇到一个情景,采用双层for循环 遍历图像的像素,当找到某一个像素点满足条件时,退出双层for 循环 。
首先了解一下 continue、break、return 各自功能用法:
1.continue 语句的作用
break常和判断语句一起是使用.
其它参考:
1、Java中break return continue 区别
因, break,无法跳出双层循环,
2个解决方案:
1、 将双层for循环 写到一个子函数里面,然后用return 进行返回,退出子函数 。
2、双层for循环不是单独的一个子函数,而是在一个主函数中,还有其它函数,此时用return,会导致整个函数结束,此时可以对双层for循环的两个变量进行同时赋值来终止双层for循环,注意,不能只将外层赋值终止值,否则会报错,因为内层还没有循环完毕,而外层已经超出范围,所以务必现将子循环变量终止后,再终止外循环变量。 代码如下:
-
for (
int i =
0; i < img.rows;i++){
-
for (
int j =
0; j < img.cols;j++){
-
int elesum = rgb.at<Vec4b>(i, j)[
0] + rgb.at<Vec4b>(i, j)[
1] + rgb.at<Vec4b>(i, j)[
2];
-
if (elesum>
0)
-
{
-
i = img.rows; j = img.cols;
// 跳出双层 循环 赋值方式终止两个变量
-
cout <<
"i: " << i <<
endl;
-
cout <<
"j: " << j <<
endl;
-
cout <<
endl;
-
//break;
-
}
-
}
-
}
</div>
</div>