黑马程序员技术交流社区

标题: 有关于for for 嵌套循环 [打印本页]

作者: run_wind    时间: 2014-10-16 12:38
标题: 有关于for for 嵌套循环
     for for嵌套循环,我怎么就是转不过弯来呢,99乘法那里还好,但是想半天,数组这里,顺序排序,冒泡排序,死活转不过弯来,视频看了好多遍了,这种嵌套循环的话,外循环和内循环应该怎么考虑怎么记,怎么定义怎么想?如果有心得的话请给点经验,这块搞不懂后面我发现都是个麻烦事儿,都快崩溃了
作者: noiary    时间: 2014-10-16 13:44
本帖最后由 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. *********
复制代码




作者: run_wind    时间: 2014-10-16 14:14
noiary 发表于 2014-10-16 13:44
确实是个问题,我也转了好久才....坦白说,直到现在也没有特别清晰.

我是这样理解的:

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

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

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

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

作者: cxdzh    时间: 2014-10-16 15:50
比如现在有编号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的人吃饭,
         }
    }
我个人的理解,不知道这样的解释能不能懂..


作者: 森屿北巷    时间: 2014-10-16 16:19
noiary 发表于 2014-10-16 13:44
确实是个问题,我也转了好久才....坦白说,直到现在也没有特别清晰.

我是这样理解的:

我在百度上也看到这样说的了。跟楼主一样,乘法表这里还好理解一点。。后面的没怎么记住
作者: noiary    时间: 2014-10-16 16:49
森屿北巷 发表于 2014-10-16 16:19
我在百度上也看到这样说的了。跟楼主一样,乘法表这里还好理解一点。。后面的没怎么记住 ...

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

苦逼的别的专业,更苦逼的是黑马逼着速成啊!!!!!!毕业2月了。再待业就不开心了
作者: run_wind    时间: 2014-10-16 17:57
zd12345 发表于 2014-10-16 17:34
楼主视频看到哪里了?

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

对。你说到点子上了!!!!!!
作者: 迷茫小王    时间: 2014-10-16 22:19
要理解嵌套循环的思想,其实很简单,就是先保持外循环的不动,将内部循环走完一遍,然后外循环x++,再走内循环,就是外循环走一个,内循环走一圈。不知道我说明白没有...
作者: 周波    时间: 2014-10-17 08:00
run_wind 发表于 2014-10-16 22:13
对。你说到点子上了!!!!!!

你是怎么解决这个问题的

作者: date1130    时间: 2014-10-17 08:11
好多大神回答的真好。。。
作者: run_wind    时间: 2014-10-17 09:36
周波 发表于 2014-10-17 08:00
你是怎么解决这个问题的

最近刚发现,还是要回归烂笔头。纸上写一遍,输入到机器里就流畅多了
作者: 康师傅-蛋黄派    时间: 2014-10-17 09:52
外循环控制行数,内循环控制列数,肯定是一行一行的打印,不会是一列一列的打印。
作者: asdf19910719    时间: 2014-10-17 10:00
冒泡排序这些确实有点混,不过先强记理解下,不行就放着等全部看完就重点突破
作者: 郭.威    时间: 2014-10-18 02:53
从新看看,做笔记
作者: 大爱卓生    时间: 2014-10-18 20:11
我也是刚学到,觉得要弄懂,必须一步一步的来,静下心来,着急是没用的,反而会影响思考。把复杂化为简单,了解代码的每一步是怎么来的,绝对不会无中生有吧,呵呵!将不会的问题放上论坛求大神。一点一点慢慢的大问题也就解决了。




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