| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖
标题:菜鸟笔记(6)for
只看楼主 加入收藏
ccnjava
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2004-7-13
收藏
 问题点数:0 回复次数:4 
菜鸟笔记(6)for

菜鸟笔记(6)for

循环结构一共三个,前面说过,(1)while.(2)do...while,今天来说最后一个for for循环是循环中的重点.也是循环中用到最多的.同时还是循环中功能最强大的. 有的书可能会把for比其他循环多介绍一点.既然它这么重要,小菜鸟就一定要学好.

for与while属于"当型"循环而do...while属于"直到型循环". 首先先来看一下它的格式,然后在让我们一点一点分析它吧.

for格式:

for(initialization;termination;iteration) { body; }

/*initialization为初始化,整个程序只执行一次,termination为终止部分,得到的必须 是一个boolean值.iteration为控制变量的增量表达式.*/

大家可以看到for循环"格式体积"减少了.除了body其他都在一行.比其他循环真 的能稍打不少东西呢呵呵. 简单解释一下:首先执行的是initialization初始化,初始化部分可以在for{} 外面声明变量,但是赋值一定要在for{}里面.也可以在for{}里面直接声明并赋值 变量. 初始化以后在termination终止部分中判断true or false.如果为true那么 先执行body循环体部分.然后在继续执行下面的iteration迭代,(注意先执行body) 这样完成了第一次循环.再返回for开头进行第2次,直到当termination 条件为false时候,退出循环.

java小贴士:事实上for循环即使initialization;termination;iteration 都没有编译也不会出错.(但是他们中间的分号必须有).不过执行以后变成死循环了. 其实body包括后面的;也可以没有,不过for后的{}必须有.当然如果什么都没有也没有 意义了,这里只是说名一下,即使没有编译也不会出错而已.

还是来举一个最简单的例子吧: 例1: public class Zzz{

public static void main(String args[]) {

for(int i=1;i<5;i++) { System.out.println("A"); } } }

简单说一下:我相信凡是学过while和do的...都不用我废话了... 先判断i是否<5.如果为true则执行body部分然后在执行i++.然后在回到开头,只有当i<5为false时候 才退出循环 程序输出为 A A A A java小贴士:在for的第1,3部分中.initialization和iteration可以用,逗号格开,加入更多的初始化 还有迭代部分.如改写上面那个例子.for(int i=1,j=1;i<5;i++,j++) 这样的话当变量1到5时j也同时到5 了.这个只需要记得用,逗号分开就可以了.中间的termination是不能分开的. java小贴士:在for中要表达一个控制变量i加1.可以写成++i,i++,i=i+1,i=+1; 这些都是一样的. 有的人偏喜欢用i++;这样显得是在执行完body以后,进行一轮循环以后在+1 不过,由于for本身就是先执行body部分,在执行iteration部分,所以在for里面他们的效果是一样的.

java小贴士:不要给for后面加分号.还有.for循环如果之中部分第一次就为false则直接退出循环. 还有不要把程序弄成死循环.如for(int i=1;true;i++) ...

再看一个很简单的例子,用来求sun=1+2+3+..5.累加. 例2 public class Zzz{ public static void main(String args[])

for(int sum=0,i=0;i<=5;i++) { sum+=i; System.out.println("sum="+sum); } } }

简单分析一下:首先定义i,sum两个int变量variables.然后初始化sum=0,i=0.(这里的sum 小菜鸟感觉只是一个充当求和的变量...) 然后判断termination终止.这里为true.然后sum+=i sum=0+0.再执行输出.第一行sum=0 最后for中的i在++,i变为1.继续下第2次循环.sun=1+2=3...sum=3 i=3..3+3..直到15 最后i=5,退出循环.

下面说最后关于欠套吧. 流程控制结构包涵流程控制结构我们称之为欠套.for结构的欠套应用还是非常广泛的. 格式如下: for(initialization;termination;iteration) { body; for(initialization;termination;iteration) { body; }

}

另外for结构里的控制变量不能相同.下面写一个最简单的欠套. 99乘法表,HOHO 例3: public class Zzz{ public static void main(String args[]){

for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ System.out.println(i+"*"+j+"="+i*j); } }

} }

简单解释一下:现看欠套外面的for.i=1为true,然后进入欠套里面.j=1为true. 执行输出i*j 1*1=1.然后j++ j=2.接着返回欠套循环for继续执行i*j 1*2=2. 然后1*3....1*9....当j=10退出循环. 返回欠套外面的循环.i++ 这时候i变成2.然后在进入欠套里面重复2*1...2*2... ...2*9... 直到9*1...9*9=81

小菜鸟的废话: 1青岛啊,啤酒:昨天看电视里面有人介绍青岛...得知再青岛喝啤酒是一种文化...汗 还有比赛,一瓶青岛啤酒看谁先喝玩...有的人只要不到10秒喝一瓶...汗... 而且还有女的参加比赛...给人的感觉...好像女侠~~HOHO.那女的果然不负众望.勇夺第一(倒数的..) 2武林至尊:最近一直再看天龙八部...黄日华演的,现在上海台还在演... ...看的有点疯狂了~没事自己就比划降龙十八掌... 再加上最近天天打乒乓球经常被0:5击败~最近比较晕,所以这几天不敢发言了,怕说错话... 3hey,玛丽奥:这个游戏做的有点意思.让人觉得不可思议的是,游戏玩着玩着,变成控制公主了,公主的卧室 还有机关,打开机关,转转转...到"库巴(最后boss,怪兽)"房间了.房间桌子上有一个本子,一看...居然是 库巴的日记本...汗(怪兽会写日记...?它的是爪子...怎么握笔?)而且日记还写了它做的所有坏事... 4奥运金牌榜:中国10快金牌了~耶现在还是第1,澳大利亚6快第2.日本第5快第3.

Q区~~~概念~~书上没有解释... Q1:在我看的书中有两本都写着这样一句话,while适用于在执行次数不固定的循环中.而for用于固定的循环. 小菜鸟一直不能理解...小菜鸟感觉这两个除格式外没区别啊...为什么这样说.不过小菜鸟看人写循环 还是for多于while...

Q2:书上还经常写这样一句话:for与while属于"当型"循环而do...while属于"直到型循环"? 什么叫"当型"怎么理解这个意思?

小菜鸟感觉意思像是要说先判断表达式ture或false.再执行body与iteration.是当型 相反是直到型. 可怎么名词中文意思怎么解释?

给大家带来的不便与麻烦还请大家多多包涵.

搜索更多相关主题的帖子: 笔记 
2004-08-17 11:25
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 

A1:我为什么觉得很好理解呢?呵呵~while里写入的是循环的条件,所以你不知道它要执行多少次,只是知道当循环条件满足时就循环,不要狭隘的认为循环条件只是什么变量大于或小于多少数的这种情况,还可以写入其他形式的循环条件,比如while(hasMoreElement()),当然你也可以把while写成知道循环次数的形式,也就是数字型变量大于小于多少数这样的,不知道你明白了没?呵呵while(循环条件),for()则是知道循环次数,然后写入循环变量,所以有这么一说

A2:其实两个差不多的,你只要理解本质就可以,对于这样无意义的名词说法不必在意,只要知道do...while循环至少循环一次,然后再判断条件,条件符合就继续就可以了。

最后给你的笔记提些意见:我看了,多数都是对书上意思的复述,通俗的说就是用自己的话把书上的意思再讲一遍,没有意思,真的,笔记要能写出自己独到的理解,光是说书上的那就没有意思了是吗?比如我考考你对for循环是不是真的理解了。for(;;)是什么意思?int i=0;for(;i<5;i++)又是什么意思?for(int i=0;;i++)呢?for(int i=0;i<5;)怎么样?还有你想想以上这些形式中的某些可能用在什么情况下呢?如果你看了第一眼,说不出程序的结果,说明你还没有完全掌握


相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-08-17 13:16
ccnjava
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2004-7-13
收藏
得分:0 

您说的全对...

事实上我耶感到这么写没什么意思了.要改进

而且我本身就是半懂...勉强写效果也不好,呵呵

再加上..这几天看天龙八部走火入魔(旁人:这也算原因?)

呵呵,下去想想改进的办法以后我再烤炉要不要继续写

谢谢您~


特此感谢三位版主对小菜鸟长期以来的帮助 他们是 jellen(类痴狂人 ) tempnetbar(J湖散人 )和Anstey (排名不分先后) 呵呵,这些日子让小菜鸟受益非浅。 忠心的谢谢您们!
2004-08-17 14:41
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 

[此贴子已经被作者于2004-08-17 14:57:00编辑过]



相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-08-17 14:56
ccnjava
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2004-7-13
收藏
得分:0 
检讨

问题篇: 第一眼大面看我只知道您打的这些编译全是对的...(旁人:废话)(小菜鸟:我的意思是... 虽然每样都少东西但都是对的...小菜鸟只死记了格式...)

说来惭愧,第二眼我只能看出来这2个是死循环,一个没有迭代,一个没有终止. 但他们的判断句永远为trule. int(int i=0;;i++)和for(int i=0;i<5;)

而for(;;)开始以为是什么都不显示...结果错了... 我去下去试了一下才知道也是死循环.虽然格式可以写成这样,但说来惭愧 我没有去亲自试验一下.而书上又没有写.(等下结尾我自我检讨.) 小菜鸟只知道判断句是ture永远循环.但是...这里什么都么有...无条件的永远true..?

至于int i=0;for(;i<5;i++) 这个一点也没猜到,没想到是运行4次... 这个该怎么解释呢?for中的初始化部分没写东西?即使不写难道有默认的? 那这里默认的应该是什么?i=0?

检讨篇: 长期以来小菜鸟学习主要是看书上例题,惭愧呀惭愧.小菜鸟这里有4,5本书. 以为综合起来内容就多了.惭愧...现在才知道很多东西书中是不会写的. 这样即使再多本书也没用.

而这些东西主要是靠自己去试.以前就有人说过,你光看光跟着做例题不想可不行. 什么都要自己试试,这里如果这么改怎么怎么样,那里如果这么改又怎么怎么样. 或者说学的太死了...呵呵~

改进啊改进,幸好版主门提出这个问题了.好在初学,又问题及时改.

小菜鸟下去想象,以后改怎么学.请各位前辈以后多多指导,多多鞭策. 以后小菜鸟有错误,请前辈门严厉批评. 小菜鸟惭愧万分...


特此感谢三位版主对小菜鸟长期以来的帮助 他们是 jellen(类痴狂人 ) tempnetbar(J湖散人 )和Anstey (排名不分先后) 呵呵,这些日子让小菜鸟受益非浅。 忠心的谢谢您们!
2004-08-17 15:34
快速回复:菜鸟笔记(6)for
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019804 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved