第三章:循环与条件判断
“早上好,今天也是元气满满的一天呢。”编译器如同昨天一样趴在我的床头,不过今天凑得倒是没有昨天那么近。
“早,早上好。”昨晚一直在想虚拟机老爷子跟我说的那些东西没能睡好。
编译器一边往外走一边说:“昨天老爷子说他要出去探望老伙计,所以今天就由我来教你进一步的编程。”
“哦哦哦,好。”
今天的早饭是油条加稀饭,油条的硬度刚刚好,一口油条,一口稀饭,感觉人生到达了巅峰。
早饭过后,如同之前一样,编译器把我拉到河边开始了他的授课。我也问过为什么这么喜欢河边?他说:“因为在河边他能感受到大自然的气息,感受到生命的律动。”
“这台词怎么这么熟悉?”我喃喃到。
“好啦,我们该进入正题了。”我们在河边的一块大石头上坐下,他大手一挥:
新手任务要求:
1.使用电脑自带的文本编辑器
2.不使用IDE或者其他代码编写工具
3.亲自做任务
4.在桌面创建一个Count.txt的文本文件
5.编写以下代码:
//程序实例
public class Count{
public static void main(String[] args){
int x = 10;
System.out.println("Count Start:" + x);
while(x > 0){
x = x-1;
if(x <= 3){
System.out.println("Count three:" + x);
}else{
System.out.println(x);
}
}
}
}
“好啦,这是我们今天要做的任务。”说完,他伸了个懒腰,“写好了叫我,我先睡个回笼觉。”
“不积跬步,无以至千里。不积小流,无以成江海。”念着念着他便睡着了。
……时间不知过了多久。
“javac 什么来着?”
“javac Count.java”编译器躺在地上慢悠悠地回答道。“嗨呀,这么快就写好了,老弟,挺不错地嘛,没有作弊吧?”他冲我挤了挤眉毛。
“好啦,今天这个代码比昨天那老头讲的要复杂一点,我一点点给你说说里头面生的部分吧。”
“第一个”
int x = 10;
“x呢,是一个变量,数学里面学的变量,他的值是不固定的。”
“这int x呢,代表着我们写了一个int类型的x变量,int类型的全称叫做integer——整数。然后java里面还有其他类型的变量,今天我们先不讨论他们,一步步来。”
“所以我们是创建了一个整数类型的x变量吗?”我挠挠头问道。
“哈哈哈,是的,等号就是给这个变量进行赋值操作,就像数学里面一样。”
“感觉和数学里面还是有些差距。”我不要意思地嘀咕道。
“哈哈哈,那是当然啦,毕竟我们是在写代码不是做数学题。”,他笑得好开心,我这辈子还真是没见过这么爱笑的人。“好啦好啦,第二个”
while(x > 0){}
“注意一下哈,这是一个代码块,是由多条语句构成的。”见我有些疑惑,他接着说道:“我们先不管括号里面有什么,我们先来了解了解这个代码块的while是啥。”
“while在英文中翻译为:当什么什么的时候。”
“当什么什么的时候执行后面的代码吗?”我不自觉地说道。
“bingo!”编译器啪地一下打了一个响指,“我们这句话的意思就是当x>0的时候执行后面的代码。”
“哦哦哦,我们的x一开始为10。”
“反应挺快,哈哈哈。”他顿了顿,接着说道:“我们把这种代码块称为while循环。”
“循环……重复做一件事情。”我喃喃道。
“好啦,我们继续往下看第三个。”
“我去,这么快?”我有些惊讶他解释的速度了。
“哈哈哈,别担心,一会儿我们会回来接着聊循环的。你先大致理解一下。”说着,他便将手指向了下面的语句:
if(x <= 3){
System.out.println("Count three:" + x);
}else{
System.out.println(x);
}
“这俩也是语句块?”
“可以这么理解,而且他俩是一组的。”编译器突然停下了,原来是有一只蜜蜂飞到了他的鼻子上。
他轻吹一口气,那蜜蜂就慢悠悠地飞走了。
“呼~差点~”他深呼了一口气。
“咳咳,刚才说到这俩都是语句块。但是,他俩是在不同的条件下执行的。比方说:if(x <= 3)语句块是在x<=3的情况下执行的,else语句块则是在x>3的情况下执行的。”
“所以……他们是对x做了一些判断之后再执行后面的语句吗?听起来和while的作用机制有点像。”
“对呀,但是他们只会执行一次,不会重复执行。除此之外,if 还有一个兄弟 else if ,我们来举一个例子吧。 ”
if(x <= 3){
System.out.println("x小于或者等于3")
}else if(3 < x < 7){
System.out.println("x大于3,但小于7")
}else{
System.out.println("x大于或者等于7")
}
“怎么样?有没有什么感觉了?”编译器把手搭在了我的肩膀上。
“似乎……我们在if之后又执行了一次判断。”
“哈哈哈,没错,就是这么简单。”
“感觉else不用写判断语句好方便。”我开心地说道。
“哈哈哈,是的,不过没有if就没有else哦。else代表的是if与else if条件之外的情况。并且else if 与 else是非必要的,这要取决于你要解决的问题。”
“哦哦哦,具体问题具体分析是吧。”
“哈哈哈,不错,哈哈哈。”
“话说,刚刚你说我们还会回去讲到循环是啥意思?”
“嘿嘿,别着急,接下来我要给你介绍的是其他几种循环:do……while、for”
“do……while比较顺眼,for是啥?”
“咱们一步步来,请看以下代码”
int x = 10;
do{
System.out.println("hello World")
}while(x > 20)
“do……while呢,他的意思就是先执行一次,再进行条件判断。”编译器解释到。
“好家伙,这操作也是可以的。”
“哈哈哈,那必须的。先上车后查票啦~”,编译器一脸地不正经,“咳咳,for呢,就有一丢丢复杂,我们修改一下我们的Count.java吧。”
//新代码
public class Count{
public static void main(String[] args){
for(int x = 10;x > 0;x = x-1){
System.out.println("Count Start:"+ x);
if(x <= 3){
System.out.println("Count three:" + x);
}
}
}
}
//旧代码
public class Count{
public static void main(String[] args){
int x = 10;
System.out.println("Count Start:" + x);
while(x > 0){
x = x-1;
if(x <= 3){
System.out.println("Count three:" + x);
}else{
System.out.println(x);
}
}
}
}
“看起来for循环好简洁。”我喃喃到。
“for循环的括号里将创建变量,条件判断,后续对变量的操作都写在了一起,所以代码就变得简洁了。大致的流程呢就是先进行x = 10的赋值,然后进行x>0的判断,判断以后就执行了下面的代码,执行完了以后再回来对x进行减一,然后循环往复,直到条件判断不成立。”
“那以后我就只用for循环吧。”
“啊这,少年,万万不可呀!他们每一种循环结构都有自己存在的价值,我们也应该根据自己遇到的问题来判断哪一种循环更具有性价比。”编译器说完,伸了个懒腰,“累死本大爷了,等那老头回来我一定找他要点补偿。”
代码讲完了,太阳公公也登上了山顶,是该吃午饭的时候了。