A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© run_wind 中级黑马   /  2014-10-16 12:38  /  1929 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

     for for嵌套循环,我怎么就是转不过弯来呢,99乘法那里还好,但是想半天,数组这里,顺序排序,冒泡排序,死活转不过弯来,视频看了好多遍了,这种嵌套循环的话,外循环和内循环应该怎么考虑怎么记,怎么定义怎么想?如果有心得的话请给点经验,这块搞不懂后面我发现都是个麻烦事儿,都快崩溃了

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

26 个回复

倒序浏览
本帖最后由 noiary 于 2014-10-16 13:45 编辑

确实是个问题,我也转了好久才....坦白说,直到现在也没有特别清晰.

我是这样理解的:
x决定排的长度(→),
y决定列的深度(↓),
  1. class Demo {
  2.         public static void main(String[] args) {
  3.                 for(int x=0; x<9; x++) {
  4.                         for(int y=0; y<9; y++) {
  5.                                 System.out.print("*");
  6.                         }
  7.                         System.out.println();
  8.                 }
  9.         }
  10. }

  11. 打印结果:
  12. *********
  13. *********
  14. *********
  15. *********
  16. *********
  17. *********
  18. *********
  19. *********
  20. *********
复制代码



回复 使用道具 举报
noiary 发表于 2014-10-16 13:44
确实是个问题,我也转了好久才....坦白说,直到现在也没有特别清晰.

我是这样理解的:

这地方还好,数组哪里就晕了。刚刚拿纸演算了一边稍微好点,但是我想知道有没有心得,比如我看到一个题,我知道该用到循环嵌套,然后该怎么用。话说你写个冒泡排序的程序,要多久写出来现在。就是纯默写,我觉得我一上机,效率低的不行
回复 使用道具 举报
我们学的都是基础的基础,提高效率这种事情是所有程序员众生的追求的最高目标.

在有限的时间内,能把视频中所讲到的东西内化就已经很棒了. 当然如果在不影响既定计划的前提下还有闲暇,能更深入的学习一下也是极好的.只是即使这基础的基础所覆盖的知识面也够我们消化很久了.

好像有点绕,简单来说就是:  

少年,后面还有更多"一大波"知识点需要学习,前面的掌握主要思想就ok啦,别钻牛角尖,抓紧时间学后面,因为后面高级部分经常会用到前面的基础知识,久而久之,你所担心的效率和深度都会不断提高.  
回复 使用道具 举报
我的想法,首先要有思路,思路清晰,才能下笔如有什么。选择排序也好,冒泡排序也好,必须先彻底理解其原理以及其执行过程。这样思路有了,代码什么的也就油然而生了。
就如选择排序:每次固定位置和后面的数依次比较,比如第一个和后面的依次比较后,第二数再依次和后面的比较,再接着第三个数直到最后一个数,这样就有直接的认识,哦,我要从前到后对每个数进行比较,每个都来那么一遍重复的动作,就有了for(从第一个数开始,所有数的个数,比较完前一轮再开始下一轮),这样就有了外循环,然后我们就考虑每次该怎么比较,是第一个和后面的依次比较,就有了for(从要比较的数后面一个数开始,被比较的数的个数,比较完前一个开始下一个),然后再填充判断条件什么的。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
比如现在有编号0-8的9个人,每个人要吃9碗饭,但是只能一个人吃完了才换下一个人吃.
用嵌套循环的思路就是,
先让第一个编号0的人吃,
编号0的人吃第一碗饭
编号0的人吃第二碗饭
编号0的人吃第三碗饭
................................
编号0的人9碗饭吃完了,也就是内部循环循环完了,才跳出,继续外部循环,换下一个编号1的人再吃9碗.....依次类推,直到所有人都吃完


//外圈循环就是判断一共有几个人,i=0,表示最开始是从编号0的人去,用变量i来代表这个编号,,,,,i++,表示每有一个人吃完饭了,代表编号的i这个变量就自动+1,下一个人编号i的人去吃,,,i<9表示编号只有0-8这9个人,编号=9就说明没人了,都吃完了,跳出循环
外圈循环(int i=0,i<9,i++)   
    {
         内圈循环(int j=0,j<9,j++) //内圈循环就是吃饭,吃一次算一碗,一共吃了9碗才跳出循环,外圈换下一个人吃饭.
         {
           编号为i的人吃饭,
         }
    }
我个人的理解,不知道这样的解释能不能懂..

回复 使用道具 举报 1 0
noiary 发表于 2014-10-16 13:44
确实是个问题,我也转了好久才....坦白说,直到现在也没有特别清晰.

我是这样理解的:

我在百度上也看到这样说的了。跟楼主一样,乘法表这里还好理解一点。。后面的没怎么记住
回复 使用道具 举报
noiary 高级黑马 2014-10-16 16:49:22
8#
森屿北巷 发表于 2014-10-16 16:19
我在百度上也看到这样说的了。跟楼主一样,乘法表这里还好理解一点。。后面的没怎么记住 ...

且行且记录!
回复 使用道具 举报
zd12345 中级黑马 2014-10-16 17:34:47
9#
楼主视频看到哪里了?
回复 使用道具 举报
算法方面的东西需要时间的积累,不是看几遍视频就能明白的。
从最初的C语言打基础,到数据结构,再到算法,大学期间这个算是最基础的课程,但也是最难的部分
好多计算机专业的毕业了都没能弄明白。。
记住数据结构与算法绝对不是短时间内就学好的。。
回复 使用道具 举报
面具猴 发表于 2014-10-16 17:52
算法方面的东西需要时间的积累,不是看几遍视频就能明白的。
从最初的C语言打基础,到数据结构,再到算法, ...

苦逼的别的专业,更苦逼的是黑马逼着速成啊!!!!!!毕业2月了。再待业就不开心了
回复 使用道具 举报
zd12345 发表于 2014-10-16 17:34
楼主视频看到哪里了?

this,就是类的封装
回复 使用道具 举报
这个应该很好理解吧,跟着视频里老师的思路走,大圈套小圈,大圈里变量动一次小圈动一圈,主要是理解,别局限举例。
回复 使用道具 举报
其实for循环嵌套本身不难,主要是难在理解老师说的顺序排序,冒泡排序方法上。外循环,就是第一个for,内循环就是第二个for。弄清楚length这个问题,就好办了。在纸上多写几遍,没走一次内循环,你画个图,自然明白。
回复 使用道具 举报
l4k3j2 初级黑马 2014-10-16 21:14:06
15#
先从简单的说起,比如简单的嵌套循环相当于你有大卡,面包,轿车三种车,从A地到B地,有三条不同的路,那么一共多少种走法,外循环就是选车,内循环就是选路。这是简单的乘法原理。难一点的是组合,就是冒泡的原理,10个数据,首先从第一个数开始循一遍,最大放在一边,然后第二个数循,但是循的少一个数。等等,把条件想好了,循环也就写好了。
回复 使用道具 举报
暴风 中级黑马 2014-10-16 21:20:18
16#
多练自然懂!!!
回复 使用道具 举报
个人建议千万不要去死记!!!!!!自己要理解原理,当原理理解后,当你需要使用时,想一下原理,就自然而然的知道该怎么写了。这应该就是所谓的思想比代码重要!
回复 使用道具 举报
周波 来自手机 中级黑马 2014-10-16 22:12:41
18#
理解不难,就是让你敲代码就懵了
回复 使用道具 举报
周波 发表于 2014-10-16 22:12
理解不难,就是让你敲代码就懵了

对。你说到点子上了!!!!!!
回复 使用道具 举报
要理解嵌套循环的思想,其实很简单,就是先保持外循环的不动,将内部循环走完一遍,然后外循环x++,再走内循环,就是外循环走一个,内循环走一圈。不知道我说明白没有...
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马