黑马程序员技术交流社区

标题: break位置的问题 [打印本页]

作者: 会飞的狼    时间: 2013-8-9 16:07
标题: break位置的问题
插入算法中关于break位置导致的错误
public static void charuSort(int[] arr)
{
       for(int y=1;y<arr.length;y++)
           {
                 for(int x=0;x<y;x++)
                     {
                            if(arr[y]<=arr[x])
                               {
                                     int temp =arr[y];
                                     for(int i=y;i>x;i--)
                                         {
                                               arr[i]=arr[i-1];
                                         }
                                     arr[x]=temp;
                                     break;  写在这里就对了为什么必须在这里?
                              }
                    }         ........本来我把return写在这里的,但是不对,跳不出第二个for循环,错误
          }
}


作者: 昨夜星风    时间: 2013-8-9 17:04
在嵌套的双重循环中,如果break写在内层循环中,就像楼主写的那个位置(在内层循环中 ),那就是结束内层循环,结果就是跳不出第二个for循环,错误。如果写在外层!那就是两个循环都退出!因为外层包含内层!
主要是就看你break靠近哪个循环就可以了!那他就控制这个循环!并只对这个循环有效!
还有break语句的应用范围,应用在选择结构和循环结构中,
以上是自己的一点理解,愿共同学习。
作者: 黑马王晓明    时间: 2013-8-11 16:01
break是跳出当前循环
return会结束当前整个函数
作者: 兜兜转转    时间: 2013-8-12 06:55
哥们,其实这个也不是什么原理不原理的东西,是基础语法,就应该熟记,多用,我的理解是这样,
更正楼上哥们的说法:

break 是跳出当前循环体,而不是结束当前循环,这个要区分开来。
return 会结束当前整个函数,也可以这么说,这样说可能更好理解。
continue 是结束被本次循环,立即进入下一次循环。

希望能给你帮助,加油吧!
作者: 曾文德    时间: 2013-8-12 08:01
如果你的是循环体的话break是后面语句不再执行而不是结束当前循环体。

作者: 以防万一    时间: 2013-8-13 22:22
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2